Yii Tutorial: Gampangnya Menulis Setter Getter di Yii
May 8th, 2012, Written by: | Categories: Programming, Tutorial, Yii Framework

Bagi yang telah mempelajari konsep pemograman berorientasi objek, untuk mengeset dan mengakses nilai properti dari suatu objek, tidak boleh langsung dilakukan. Kita harus membuat sebuah fungsi setter dan getter untuk keperluan mengeset dan mengakses. Alasannya beragam, misalnya untuk mempermudah melakukan validasi atau jika terjadi perubahan tidak perlu mengubah koding di semua tempat. Tetapi alasan paling utama adalah karena jika mengakses langsung atau set nilai langsung suatu properti berjenis private, maka pasti akan error.

Coba saja code di bawah ini jika tidak percaya.

class Mahasiswa{
  private $nama;
}

$obj = new Mahasiswa();
$obj->nama = 'Dumas';
echo $obj->nama;

Bagaimana, sudah percaya bukan?

Oleh karena itu, cara untuk mengakses ataupun menginisialisasi private sudah pasti harus menggunakan setter dan getter. Jadi, supaya bisa mengakses nilai kita menulis seperti berikut ini:

class Mahasiswa{
  private $nama;
  public function getNama(){
      return $this->nama;
  }
  public function setNama($n){
     $this->nama = $n;
  }
}

$obj = new Mahasiswa();
$obj->setNama('Dumas');
echo $obj->getNama();

Masalahnya, terkadang orang tidak suka pakai setBlabla() atau getBlabla(). Nah, di Yii Framework, kita mendapatkan kelebihan yang menarik mengenai setter dan getter. Yii memiliki sebuah kelas generik yang disebut CComponent. Jika kita sedang membuat kelas baru, biasanya disarankan supaya kelas itu merupakan turunan dari CComponent, dengan demikian kita bisa mendapatkan keuntungan overloading setter dan getter.

Perhatikan contoh sederhana berikut ini:

class Mahasiswa extends CComponent{
    private $nama ;

public function getNama(){
    return $this->nama;
}

public function setNama($n){
    $this->nama = $n;
}
}

$obj = new Mahasiswa();
$obj->nama = 'Dumas'; //pengganti $obj->setNama('Dumas');
echo $obj->nama; //pengganti $obj->getNama();

Perhatikan bagaimana kita bisa mengakses langsung dengan menulis

$obj->nama = 'Dumas'

Koding di atas akan berjalan sempurna. Jadi dengan memanfaatkan CComponent, Anda tetap bisa mengakses variabel properti secara langsung, walaupun tetap menggunakan setter dan getter. Terasa kan kelebihannya, Anda tidak melanggar konsep OOP dan penulisan koding tetap terasa lebih menyenangkan.

More about: , , ,

Leave a Reply