تریس لاگین

[rtl]

تو کد زیر موارد زیر کجا تعریف شدن:

errorCode

self::ERROR_USERNAME_INVALID

ERROR_PASSWORD_INVALID

ERROR_NONE

کاربرد تابع getId چی هستش؟ اینکه نام کنترلر رو برمیگردونه صحیح ولی دلیل استفاده از متغیری که مقدار دهی شده چیه[/rtl]




class UserIdentity extends CUserIdentity

{

    private $_id;

    public function authenticate()

    {

        $record=User::model()->findByAttributes(array('username'=>$this->username));

        if($record===null)

            $this->errorCode=self::ERROR_USERNAME_INVALID;

        else if($record->password!==crypt($this->password,$record->password))

            $this->errorCode=self::ERROR_PASSWORD_INVALID;

        else

        {

            $this->_id=$record->id;

            $this->setState('title', $record->title);

            $this->errorCode=self::ERROR_NONE;

        }

        return !$this->errorCode;

    }

 

    public function getId()

    {

        return $this->_id;

    }

}



[rtl]

اینایی که گفتی تو کلاس CBaseUserIdentity تعریف شدند وبا توجه به مبحث وراثت اینجا نیز قابل دسترسی‌اند

[/rtl]

[font="Tahoma"] [rtl]

برای شناسایی کاربران در طول برنامه نیاز به یک کلید منحصر به فرد است، غالباً از فیلد یکتای id از جدول مربوط به یوزر استفاده میشه و به صورت پیشفرض getId همین id رو بر میگردونه، بدین صورت:

[/rtl]




Yii::app()->user->getId()



[rtl]

به همین خاطر معمولاً بجای اون از

[/rtl]




Yii::app()->user->id



[rtl]

هم استفاده میشه.

اما اگر نخواهید از id استفاده کنید، مثلاً بخواید از یوزر نیم یا ایمیل استفاده کنید، میتونید تابع getId که برای همین منظور بازنویسی کنید.

مثال:

[/rtl]




	private $_username;


:

:


        	$this->_username = $record->username;


:

:


	public function getId()

	{

    	return $this->_username;

	}



[rtl]

البته تجربه شخصی بود امیدوارم درست باشه

[/rtl] [/font]