OOP dalam PHP

OOP (Object) Oriented Programming adalah jenis pemrograman yang menggunakan objek-objek berisi properti dan method. Dalam OOP, programmer menggunakan class sebagai blue print dari suatu objek. Dalam class, variabel disebut properti dan function disebut dengan method. Setelah class dibuat, kita bisa membuat objek dengan class tersebut. Sebelum melanjutkan pembahasan tentang OOP, saya akan memberi contoh cara mendeklarasikan class.

class namakelas{
    var $nama_properti1;

    var $nama_properti2;
    function nama_method(){
        //isi function
    }
    //variabel dan function lainnya
}


Class bisa memiliki beberapa properti dan method. Setiap properti atau method bisa memiliki batas aksebilitas tertentu. Pemberian aksebilitas dari tiap anggota class dalam OOP biasa disebut dengan "encapsulation". Dengan encapsulation kita bisa membatasi hak akses dari objek lain terhadap suatu object. Dalam PHP, encapsulation yang bisa kita gunakan ada 3 macam, yaitu :
  1. Public : Properti dan method dapat diakses dari bagian manapun dalam script.
  2. Private : Properti dan method hanya bisa diakses dari dalam class saja.
  3. Protected : Properti dan method hanya bisa diakses dari dalam class atau objek turunan.
Contoh penggunaan encapsulation bisa kalian lihat di bawah ini.

Saat membuat objek, kita bisa memberikan nilai menggunakan constructor bersamaan dengan pembuatan object baru ataupun memberikan nilai setelah object dibuat.

class rumah{
   
public $pintu;
    public $jendela;
   
private $kursi;

    private $meja;
    protected $halaman;
 
    function __construct($x, $y){
        $this->meja=$x;
        $this->kursi=$y;
    }
   
    function nama_method(){
        //isi function
    }
}

Pada contoh di atas, saya juga menyertakan function khusus yang bernama __construct (yang diawali dengan dua underscore). Function tersebut adalah function yang otomatis akan dipanggil saat objek dibuat. Parameter function tersebut bisa digunakan untuk memberi nilai pada properti dalam object saat object dibuat.

Jika kalian ingin menggunakan objek, kalian perlu menginstansiasi objek dengan menggunakan "new". Cara melakukan instansiasi (instantiation) bisa kalian lihat di dalam script PHP di bawah ini.

<?PHP
    class rumah{
        public $pintu;
        public $jendela;
        private $kursi;
        private $meja;
        protected $halaman;
  
        function __construct($x, $y){
            $this->meja=$x;
            $this->kursi=$y;
        }
  
        function jelaskan(){
            echo("Meja : ".$this->pintu."<BR />");
            echo("Kursi : ".$this->jendela);
        }
    }
    //instansiasi objek
    $rumahku=new rumah(2, 4);
    $rumahku->pintu=2;
    $rumahku->jendela=5;
    $rumahku->jelaskan();
?>

Pada contoh di atas, kalian sudah menggunakan instansiasi objek untuk membuat objek rumahku dari class rumahku. Kalian juga sudah memberi nilai dengan menggunakan properti dan method di luar method. Dari contoh di atas jelas terlihat bahwa nama objek dan anggotanya dipisahkan dengan tanda "->". Selanjutnya, kalian bisa coba buat sendiri beberapa object dengan satu class yang sama.

Oh ya, untuk menggunakan properti dan method di dalam class yang memiliki properti dan method tersebut, kalian perlu menggunakan $this. Kalau properti atau method digunakan di luar class setelah object dibuat, maka yang digunakan adalah nama object-nya.

Satu hal lagi yang kalian perlu ketahui adalah inheritance atau pewarisan. Pewarisan adalah pembuatan class baru dengan menyalin class yang lebih sederhana sambil menambahkan properti dan method baru. Class yang dibuat dengan inheritance akan memiliki properti dari "class ortunya". Dalam PHP, inheritance ditandai dengan penggunaan "extends" seperti contoh di bawah ini.

class namaclassbaru extends namaclassortu{
    //tambahkan sendiri anggotanya

}

Penggunaan inheritance bisa kalian lihat pada contoh di bawah ini.


<?PHP
    class rumah{
        public $pintu;
        public $jendela;
        private $kursi;
        private $meja;
        protected $halaman;

        function __construct($x, $y){
            $this->meja=$x;
            $this->kursi=$y;
        }

        function jelaskan(){
            echo("Meja : ".$this->pintu."<BR />");
            echo("Kursi : ".$this->jendela."<BR />");
        }
    }

    class gedung extends rumah{
        public $tingkat;
        public $lift;

        function __constructor($x, $y){
            $this->lift=$x;
            $this->tingkat=$y;
        }

        function tampilkan(){
            echo("Lift : ".$this->lift."<BR />");
            echo("Tingkat : ".$this->tingkat."<BR />");
        }
     }

    //instansiasi objek rumah
    $rumahku=new rumah(2, 4);
    $rumahku->pintu=2;
    $rumahku->jendela=5;
    $rumahku->jelaskan();

    //instansiasi objek gedung
    $gedungku=new gedung(3, 5);
    $gedungku->tampilkan();
?>