-
Notifications
You must be signed in to change notification settings - Fork 0
User
برای هر کاربر دو موجودیت متفاوت در نظر گرفته میشود که عبارتند از:
- حساب کاربری
- پروفایل کاربری
در این سکو کاربر با استفاده از کلاس Pluf_User ایجاد میشود که در احراز اصالت به کار گرفته میشود.
همواره شما نیازمند اضافه کردن اطلاعاتی به کاربران سیستم هستید چرا که یک کاربر در حالت کلی شامل اطلاعات محدودی در سیستم احراز اصالت است. برای نمونه ممکن است اطلاعات حسابهای مالی، آدرس ایمیل و یا سایر موارد مورد نیاز خود را به یک کاربر اضافه کنید. این در حالی است که سیستم تنها یک موجودیت پایه برای کاربران در نظر گرفته است. اضافه کردن این خصوصیتها به کاربران با استفاده از پروفایل کاربران انجام میشود.
پروفایل کاربر در حقیقت یک ساختار دادهای مانند سایر ساختارهای دادهای است که اطلاعاتی جامعتر را راجع به یک کاربر ایجاد میکند. این پروفایل شامل یک کلید خارجی یکتا است که آن را به یک کاربر مرتبط میکنند. برای نمونه کد زیر یک پروفایل برای کاربر ایجاد کرده است:
class MyApp_UserProfile extends Pluf_Model
{
public $_model = __CLASS__;
function init()
{
// The table in the database where your
// model is stored.
$this->_a['table'] = 'myapp_userprofiles';
// The name of your model
$this->_a['model'] = 'MyApp_UserProfile';
// Here the core with the definition of the
// fields.
$this->_a['cols'] = array(
// The id field of type sequence is mandatory
// for each model
'id' =>
array(
'type' => 'Pluf_DB_Field_Sequence',
'blank' => true,//It is automatically added.
),
'user' =>
array(
'type' => 'Pluf_DB_Field_Foreignkey',
'model' => 'Pluf_User',
'blank' => false,
'unique' => true,
),
'pet_name' =>
array(
'type' => 'Pluf_DB_Field_Varchar',
'blank' => false,
'size' => 100,
),
);
}
}
سکو با استفاده از تنظیمهای سیستمی میتواند رابطه میان یک پروفایل و یک کاربر را تعیین کند. برای این کار در تنظیمهای سیستم باید کد زیر را وارد کنید.
$cfg['user_profile_class'] = 'MyApp_UserProfile';
علاوه بر این، همانند تمام معماریهایی که برای مدلهای دادهای در نظر گرفته شده، باید رابطه میان کاربر و پروفایل آن را در تنظیمهای مدل رابطهای تعیین کنید. برای این کار نیز کد زیر را به پرونده MyApp/relations.php اضافه کنید.
$m['MyApp_UserProfile'] = array('relate_to' => array('Pluf_User'));
به این ترتیب ساختارهای دادهای مورد نیاز برای پروفایل کاربران ایجاد میشود.
ابزارهای مناسبی برای کار با این پروفایل نیز در نظر گرفته شده است. برای نمونه گرفتن پروفایل یک کاربر به سادگی به صورت زیر انجام میشود:
// Get the user with id 1 in the DB
$user = new Pluf_User(1);
$profile = $user->getProfile();
در صورتی که پروفایلی برای کاربر در نظر گرفته نشده باشد استثنای Pluf_Exception_DoesNotExist صادر خواهد شد. در این صورت باید خطا را مدیریت کرده و در مقابل آن یک پروفایل برای کاربر ایجاد کنید.
در صورتی که تنظیمهای مربوط به پروفایل در تنظیمهای سیستم ایجاد نشده باشد، فراخوانی بالا منجر به صادر شدن خطای Pluf_Exception_SettingError میشود. در این حالت نیز باید به تنظیمهای سیستم مراجعه کرده و تنظیمهای مناسب برای پروفایل را ایجاد کنید.