Yii Tutorial: Mengapa Perlu Override getId() pada UserIdentity
May 22nd, 2012, Written by: | Categories: Programming, Yii Framework

Umumnya ketika kita men-generate aplikasi Web berbasis Yii, isi pada UserIdentity tidaklah ada getId(). Tetapi jika Anda memperhatikan semua tutorial, forum dan lain sebagainya, mengapa mereka menyarankan kita untuk meng-override fungsi getId()?

Mungkin Anda tidak akan asing dengan bentuk koding seperti berikut ini:

<?php
class UserIdentity extends CUserIdentity
{
    public function authenticate()
    {
        $users=array(
            // username => password
            'demo'=>'demo',
            'admin'=>'admin',
        );
        if(!isset($users[$this->username]))
            $this->errorCode=self::ERROR_USERNAME_INVALID;
        else if($users[$this->username]!==$this->password)
            $this->errorCode=self::ERROR_PASSWORD_INVALID;
        else
            $this->errorCode=self::ERROR_NONE;
        return !$this->errorCode;
    }
}

Nah koding di atas merupakan koding default dari kelas UserIdentity milik Yii. Jika Anda lihat, tidaklah ada fungsi getId(). Namun, jika Anda mengikuti tutorial bagaimana membuat blog, Anda akan diminta menulis koding baru di UserIdentity seperti berikut ini:

<?php
class UserIdentity extends CUserIdentity
{
    private $_id;
    public function authenticate()
    {
        $username=strtolower($this->username);
        $user=User::model()->find(’LOWER(username)=?’,array($username));
        if($user===null)
            $this->errorCode=self::ERROR_USERNAME_INVALID;
        else if(!$user->validatePassword($this->password))
            $this->errorCode=self::ERROR_PASSWORD_INVALID;
        else
        {
            $this->_id=$user->id;
            $this->username=$user->username;
            $this->errorCode=self::ERROR_NONE;
        }
        return $this->errorCode==self::ERROR_NONE;
    }

    public function getId()
    {
        return $this->_id;
    }
}

Perhatikan. Anda diminta untuk menulis

 private $_id;

Kemudian pada saat otentikasi berhasil, dilakukan

 $this-> id=$user->id;

Dan terakhir, pada bagian bawah ditulis koding untuk override getId().

public function getId()
{
    return $this-> id;
}

Sebenarnya alasannya sangat sederhana. Jika kita tidak override getId(), maka ketika kita menulis Yii::app()->user->id, kita akan mendapatkan username. Tetapi jika kita melakukan override, maka hasilnya adalah nilai id dari user. Pada kenyataannya kita akan lebih memerlukan nilai ID dari user daripada username. Oleh karena itulah, hampir semua kasus, kita pasti harus meng-override getId() pada kelas UserIdentity.

More about: , ,

4 Responses to “Yii Tutorial: Mengapa Perlu Override getId() pada UserIdentity”

  1. Pace

    Gimana ya cara install Yii? koq selalu gagal utk bikin aplikasi

    Reply
    • Garry

      Gagal bagaimana? Mungkin php.exe-nya gagal ditemukan oleh Windows?

      Kalau php.exe gak ditemukan, solusinya adalah gini:
      1. Klik kanan “my computer” pergi “system properties” cari “advanced” tab, klik “environment variables”
      2. Di “system variables” cari variable tertulis “PATH” dan klik tombol “Edit”
      3. Pada “Variable Value” tambahkan path php.exe path dengan sebuah titik koma di depan seperti ini(tanpa kutip) “;C:\Program Files\PHPexeFolder\”
      “PHPexeFolder” ini hanya contoh, coba cari saja php.exe ada di mana pas install.

      Reply

Leave a Reply