Object Oriented Programming – OOP PHP untuk Pemula

By . Kategori: PHP Tags: ,

irnanto.com – Object Oriented Programming (pemrograman berorientasi objek) pada pemrograman PHP hampir sama dengan pemrograman lainnya yang menggunakan OOP seperti java salahsatunya. Gaya penulisan koding dikelompokkan ke dalam kelas (class) untuk membantu dalam menciptakan kekompakkan dan membuat kode atau program lebih efektif.

Dulu banyak pengembang web yang menggunakan PHP merasa bahwa OOP PHP tampak lebih kompleks daripada prosedural sederhana. Namun, setelah diamati lebih dekat, OOP sebenarnya adalah pendekatan yang sangat mudah dan sederhana untuk pemrograman saat ini.

Memahami Pemrograman Berorientasi Objek

Pemrograman berorientasi objek adalah gaya pengkodean yang memungkinkan pengembang(developer) dapat mengembangkan kelompok-kelompok tugas tertentu ke dalam kelas (class), dan dapat mengelompokkan ke dalam tugas-tugas yang serupa/sama.

Salah satu manfaat pemrograman berorientasi objek adalah ketika melakukan perubahan informasi dalam kode program, biasanya jika kita tidak menggunakan OOP untuk melakukan perubahan kode, maka akan banyak file / kode program yang harus dirubah.

Dengan menggunakan pemrograman berorientasi objek, Anda hanya perlu melakukan sedikit perubahan jika akan merubah kode program.

Mengenal Objects (objek) dan Classes (kelas)

Sebelum Anda mempelajari dan mengenal poin-poin penting dari OOP, maka Anda harus memahami tentang perbedaan antara objek dan kelas. Saya akan memberi sebuah perumpamaan untuk menggambarkan class dan object seperti di bawah ini.

Class contohnya seperti sebuah blueprint dari sebuah rumah. Class mendefinisikan bentuk rumah di sebuah kertas, dengan hubungan antara bagian-bagian berbeda dari rumah dengan sangat detail dan terencana meskipun rumah tidak ada (wujudnya belum ada).

Object contohnya seperti rumah yang sebenarnya dibangun sesuai dengan blueprint. Penyimpanan data di dalam objek seperti kayu, beton, batu, dan pasir yang membentuk rumah (tanpa dirakit/disatukan sesuai dengan blueprint). Namun, ketika itu semua datang bersama-sama, maka itu bisa menjadi terorganisir, dan menjadi rumah yang berguna.

Class membentuk struktur dari data dan tindakan serta menggunakan informasi tersebut untuk mambangun object. Lebih dari satu objek dapat dibangun dari kelas yang sama dan saat yang sama pula.

Sama dengan penggambaran class dan object yang telah saya jabarkan di atas, misalnya 100 rumah berbeda yang terlihat sama tetapi penghuninya dan dekorasi di dalamnya berbeda.

Struktur Class

Sintaks untuk membuat class cukup sederhana yaitu menyatakan kelas dengan menggunkan kata kunci class dan diikuti dengan nama kelas, serta isi class di apit oleh kurung kurawal “{ }”.

<?php
    class ClassIrnanto {
        // properti dan method Class diletakkan di sini
    }
?>

Setelah membuat class, class baru dapat digunakan dan disimpan dalam variabel dengan menggunakan kata kunci new

$objek = new ClassIrnanto;

Anda dapat melihat konten dalam class menggunkan var_dump(). Fungsi ini menampilkan informasi terstruktur sekitar satu atau lebih ekspresi yang mencakup nilai dan jenis. Array dan objek dieksplorasi secara rekursif dengan nilai-nilai menjorok untuk menunjukkan struktur.

var_dump($objek);

Untuk mencoba proses dari kode-kode di atas, buatlah sebuah file dengan coba-class.php dan simpan di folder www atau htdocs (atau di lokasi peletakkan file di server).

<?php
    class ClassIrnanto {
        // properti dan method Class diletakkan di sini
    }
    $objek = new ClassIrnanto;
    var_dump($objek);
?>

Jalankan file coba-class.php di browser Anda dan perhatikan outputnya, jika benar maka hasilnya akan seperti di bawah ini :

object(ClassIrnanto)#1 (0) { }

Mendefinisikan Property Class

Untuk menambahkan property atau variabel ke dalam class, Hampir sama dengan membuat variabel PHP pada umumnya, hanya saja yang membedakan adalah status penggunaannya.

Unutk memambahkan properti dalam class, buatlah kode seperti di bawah ini.

<?php
    class ClassIrnanto {
        public $prop = “isi properti ClassIrnanto”;
    }
    $objek = new ClassIrnanto;
    echo $obj->prop;
?>

kode keyword public menentukan visibilitas properti, atau dengan kata lain bagaimana properti itu dapat diberlakukan.

Disetiap program akan ada banyak class, jika objek individu tidak dirujuk/diarahkan, maka script tidak mampu untuk menentukan objek yang akan di baca dari class. Penggunaan tanda panah (->) merupakan konstruk OOP yang mengakses sifat yang terkandung dan metode dari objek tertentu.

Untuk membaca properi di dalam class ClassIrnanto dan menampilkannya ke browser, maka dibutuhkan referensi objek dari class tersebut, seperti yang di contohkan di atas yaitu echo $obj->prop;

Hasil output dari program di atas adalah seperti di bawah ini

isi properti ClassIrnanto

Mendefinisikan Class Method

Methods adalah fungsi sepesifik dari class. Method digunakan sebagai sebuah aksi individu yang akan dapat melakukan pendefenisian dalam class. Misalnya untuk membuat method yang akan mengatur dan mendapatkan nilai dari property class $prop, tambahkan kode seperti di bawah ini.

<?php
    class ClassIrnanto {
        public $prop = “isi properti ClassIrnanto”;

        public function setProperty($nilaibaru){
            $this->prop = $nilaibaru;
        }

        public function getProperty(){
            return $this->prop . “<br/>”;
        }
    }
    $objek = new ClassIrnanto;

    echo $objek->getProperty(); // Mengambil property value
    $objek->setProperty(“ini adalah properi baru irnanto.com”); // Set nilai properti
    echo $objek->getProperty(); // Mengambil nilai properti untuk melihat hasil perubahan

?>

Catatan : OOP memungkinkan objek untuk mereferensikan diri sendiri dengan menggunakan $this.

Untuk menggunakan atau menjalankan method, Anda dapat memanggilnya seperti pemanggilan fungsi, tetapi sebelumnya Anda harus mereferensikan objek dari class method tersebut. Untuk melihat hasil dari script di atas, Anda perlu mereload browser atau menjalankannya. Hasil yang akan muncul seperti di bawah ini.

isi properti ClassIrnanto
ini adalah properi baru irnanto.com

Anda bisa membuat banyak objek baru dari kelas yang sama, karena OOP membuat objek sebagai entitas yang terpisah.

Method Spesial di OOP

Untuk membuat penggunaan objek lebih mudah, PHP juga menyediakan sejumlah method khusus yang akan dijalankan ketika sebuah aksi dijalankan dalam objek class. Hal ini dapat mempermudah developer dalam proses pengembangan aplikasi yang dibuat. Ada beberapa spesial method di OOP, di antaranya seperti di bawah ini :

Constructor

Ketika sebuah objek dipakai, ada hal yang ingin dijalankan otomatis atau langsung tanpa harus memanggilnya terlebih dulu, dan PHP memiliki method unik tersebut. Method yang digunakan adalah __construct() yang dapat dipanggil secara otomatis ketika setiap kali objek baru dibuat.

Anda bisa lihat contoh source code di bawah ini untuk menggambarkan konsep konstruktor. Tambahkan konstruktor pada class dan isikan pesan yang akan di tampilkan ketika setiap kali class baru di buat.

<?php
    class ClassIrnanto {
        public $prop = “isi properti ClassIrnanto”;

        public function __construct(){
            echo ‘Class “‘, __CLASS__, ‘” telah di inisialisasi !<br />’;
        }

        public function setProperty($nilaibaru){
            $this->prop = $nilaibaru;
        }

        public function getProperty(){
            return $this->prop . “<br/>”;
        }
    }
    $objek = new ClassIrnanto;

    echo $objek->getProperty(); 
    echo “Akhir dari file.<br />”;

?>

Catatan : fungsi __CLASS__ untuk mengembalikan nama class dimana ia di panggil. __CLASS__ adalah salah satu konstanta unik di PHP class. 

Jalankan script PHP class contruct dan lihat hasil outputnya. JIka sukses, maka hasil outputnya akan keluar seperti di bawah ini.

Class “ClassIrnanto” telah di inisialisasi !
isi properti ClassIrnanto
Akhir dari file.

Destructor

Memanggil sebuah fungsi atau method ketika objek di hancurkan dengan menggunakan __destruct(). Method destructor berguna untuk membersihkan class (misalnya menutup koneksi database).

Buatlah pesan ketika objek dihancurkan dengan mendefinisikan method destructor seperti source code di bawah ini.

<?php
    class ClassIrnanto {
        public $prop = “isi properti ClassIrnanto”;

        public function __construct(){
            echo ‘Class “‘, __CLASS__, ‘” telah di inisialisasi !<br />’;
        }

        public function __destruct(){
            echo ‘Class “‘, __CLASS__, ‘” telah dihancurkan.<br />’;
        }

        public function setProperty($nilaibaru){
            $this->prop = $nilaibaru;
        }

        public function getProperty(){
            return $this->prop . “<br/>”;
        }
    }
    $objek = new ClassIrnanto;

    echo $objek->getProperty(); 
    echo “Akhir dari file.<br />”;

?>

Lihatlah hasilnya, jika benar maka yang muncul seperti seperti ini :

Class “ClassIrnanto” telah di inisialisasi !
isi properti ClassIrnanto
Akhir dari file.
Class “ClassIrnanto” telah dihancurkan

ketika akhir dari file tercapai, PHP otomatis melepas seluruh sumber daya (resource).

Anda bisa membuat pemicu destructor secara eksplisit untuk menghancurkan objek dengan menggunakan fungsi unset(). Anda bisa mencobanya seperti script di bawah ini.

<?php
    class ClassIrnanto {
        public $prop = “isi properti ClassIrnanto”;

        public function __construct(){
            echo ‘Class “‘, __CLASS__, ‘” telah di inisialisasi !<br />’;
        }

        public function __destruct(){
            echo ‘Class “‘, __CLASS__, ‘” telah dihancurkan.<br />’;
        }

        public function setProperty($nilaibaru){
            $this->prop = $nilaibaru;
        }

        public function getProperty(){
            return $this->prop . “<br/>”;
        }
    }
    $objek = new ClassIrnanto;

    echo $objek->getProperty(); 
    unset($objek); // menghancurkan objek
    echo “Akhir dari file.<br />”;

?>

Hasil output dari script di atas tidak jauh berbeda dengan script sebelumnya, hanya saja proses penghancuran objek sebelum script menampilkan “Akhir dari file.”, sehingga method destructor akan di jalankan sebelum akhir dari script.

Anda bisa melihat dan membandingkan hasil output script di atas dengan script sebelumnya. Jalankan script di atas dan jika benar maka hasilnya akan seperti di bawah ini.

Class “ClassIrnanto” telah di inisialisasi !
isi properti ClassIrnanto
Class “ClassIrnanto” telah dihancurkan
Akhir dari file.

Konversi ke String

Jika script mencoba untuk menampilkan class sebagai string maka akan muncul pesan kesalahan, untuk menghindari kasalahan tersebut maka Anda harus menggunakan method __toString().  Coba kita buat script menampilkan class seperti di bawah ini dan perhatikan output yang akan dihasilkan.

<?php
    class ClassIrnanto {
        public $prop = “isi properti ClassIrnanto”;

        public function __construct(){
            echo ‘Class “‘, __CLASS__, ‘” telah di inisialisasi !<br />’;
        }

        public function __destruct(){
            echo ‘Class “‘, __CLASS__, ‘” telah dihancurkan.<br />’;
        }

        public function setProperty($nilaibaru){
            $this->prop = $nilaibaru;
        }

        public function getProperty(){
            return $this->prop . “<br/>”;
        }
    }
    $objek = new ClassIrnanto;

    echo $objek; //menampilkan objek sebagai string 
    unset($objek); // menghancurkan objek
    echo “Akhir dari file.<br />”;

?>

Jika Anda jalankan script di atas maka akan muncul pesan error seperti gambar di bawah ini.

Tampilan output menampilkan Class Tanpa toString

Tampilan output menampilkan class tanpa tostring

Tambahkan fungsi atau method __toString() untuk dapat memanggil atau menampilkan class. Ketikkan script seperti di bawah ini.

<?php
    class ClassIrnanto {
        public $prop = “isi properti ClassIrnanto”;

        public function __construct(){
            echo ‘Class “‘, __CLASS__, ‘” telah di inisialisasi !<br />’;
        }

        public function __destruct(){
            echo ‘Class “‘, __CLASS__, ‘” telah dihancurkan.<br />’;
        }

        public function __toString(){
            echo “menggunakan method toString : “;
            return $this->getProperty();
        }

        public function setProperty($nilaibaru){
            $this->prop = $nilaibaru;
        }

        public function getProperty(){
            return $this->prop . “<br/>”;
        }
    }
    $objek = new ClassIrnanto;

    echo $objek; //menampilkan objek sebagai string 
    unset($objek); // menghancurkan objek
    echo “Akhir dari file.<br />”;

?>

Jika Anda jalankan script di atas maka hasil outputnya akan seperti di bawah ini.

Class “ClassIrnanto” telah di inisialisasi !
menggunakan method toString : isi properti ClassIrnanto
Class “ClassIrnanto” telah dihancurkan.
Akhir dari file.

Class Turunan atau  Class Inheritance

Class dapat mewarisi method dan property dari class lain dengan menggunakan kata kunci extends. Misalnya Anda membuat dua class atau lebih dan ada class yang ingin menggunkan method dari class lain, maka anda bisa menambahkan kata kunci extends di class yang ingin diwarisi method class lain dan diikuti nama class yang ingin diikuti. Perhatikan contoh script di bawah ini.

<?php
    class ClassIrnanto {
        public $prop = “isi properti ClassIrnanto”;

        public function __construct(){
            echo ‘Class “‘, __CLASS__, ‘” telah di inisialisasi !<br />’;
        }

        public function __destruct(){
            echo ‘Class “‘, __CLASS__, ‘” telah dihancurkan.<br />’;
        }

        public function __toString(){
            echo “menggunakan method toString : “;
            return $this->getProperty();
        }

        public function setProperty($nilaibaru){
            $this->prop = $nilaibaru;
        }

        public function getProperty(){
            return $this->prop . “<br/>”;
        }
    }

    class ClassDua extends ClassIrnanto{
        public function methodBaru(){
            echo “Dari methodBaru di class ” . __CLASS__ . “.<br />”;
        }
    }

    $objek = new ClassDua;

    echo $objek->methodBaru();
    echo $objek->getProperty();

?>

Jika Anda jalankan script di atas dan benar maka hasilnya akan seperti di bawah ini.

Class “ClassIrnanto” telah di inisialisasi !
Dari methodBaru di class ClassDua.
isi properti ClassIrnanto
Class “ClassIrnanto” telah dihancurkan.

Menimpa property dan method warisan

Merubah properti dan method yang sudah ada dari class pewarisan adalah dengan cara melakukan penimpaan properti atau method di class child atau class yang di warisi. Penimpaan ini bisa dilakukan dengan menyatakan atau menulis ulang properti atau method tersebut. Perhatikan source code berikut ini.

<?php
    class ClassIrnanto {
        public $prop = “isi properti ClassIrnanto”;

        public function __construct(){
            echo ‘Class “‘, __CLASS__, ‘” telah di inisialisasi !<br />’;
        }

        public function __destruct(){
            echo ‘Class “‘, __CLASS__, ‘” telah dihancurkan.<br />’;
        }

        public function __toString(){
            echo “menggunakan method toString : “;
            return $this->getProperty();
        }

        public function setProperty($nilaibaru){
            $this->prop = $nilaibaru;
        }

        public function getProperty(){
            return $this->prop . “<br/>”;
        }
    }

    class ClassDua extends ClassIrnanto{
        public function __construct(){
            echo ‘Class “‘, __CLASS__, ‘” telah menimpa method construct induk !<br />’;
        }

        public function methodBaru(){
            echo “Dari methodBaru di class ” . __CLASS__ . “.<br />”;
        }
    }

    $objek = new ClassDua;

    echo $objek->methodBaru();
    echo $objek->getProperty();

?>

Jalankan script di atas untuk mencoba menimpa method dari class induk seperti di bawah ini.

Class “ClassDua” telah menimpa method construct induk !
Dari methodBaru di class ClassDua.
isi properti ClassIrnanto
Class “ClassIrnanto” telah dihancurkan.

Menjaga Fungsi Method Parent Ketika Menimpa Method Tersebut

Pada pembahasan di atas, kita telah mempelajari cara menimpa method class induk, tetapi property pada class induk tersebut akan hilang atau ditimpa dengan property baru pada class child.

Jika Anda ingin menjaga property pada class induk dan juga menambahkan property baru pada class turunan, maka di class turunan kita menambahkan kata kunci dengan operator resolusi lingkup (scope resolution operator) (::).

Ketikkan script di bawah ini untuk mencoba menjaga fungsi method parent ketika ingin menambahkan property pada class yang diwarisi.

<?php
    class ClassIrnanto {
        public $prop = “isi properti ClassIrnanto”;

        public function __construct(){
            echo ‘Class “‘, __CLASS__, ‘” telah di inisialisasi !<br />’;
        }

        public function __destruct(){
            echo ‘Class “‘, __CLASS__, ‘” telah dihancurkan.<br />’;
        }

        public function __toString(){
            echo “menggunakan method toString : “;
            return $this->getProperty();
        }

        public function setProperty($nilaibaru){
            $this->prop = $nilaibaru;
        }

        public function getProperty(){
            return $this->prop . “<br/>”;
        }
    }

    class ClassDua extends ClassIrnanto{
        public function __construct(){
            parent::__construct(); // Memanggil konstruktor kelas induk
            echo ‘Class “‘, __CLASS__, ‘” telah menimpa method construct induk !<br />’;
        }

        public function methodBaru(){
            echo “Dari methodBaru di class ” . __CLASS__ . “.<br />”;
        }
    }

    $objek = new ClassDua;

    echo $objek->methodBaru();
    echo $objek->getProperty();

?>

Jika dijalankan maka hasilnya akan seperti di bwah ini.

Class “ClassIrnanto” telah di inisialisasi !
Class “ClassDua” telah menimpa method construct induk !
Dari methodBaru di class ClassDua.
isi properti ClassIrnanto
Class “ClassIrnanto” telah dihancurkan.

Menetapkan Visibilitas Properties dan Metode pada Class

Anda bisa menambahkan kontrol atas objek, method, dan property secara visibilitas. Cara ini bisa mengontrol bagaimana dan dari mana properti dan method dapat diakses. Ada tiga kata kunci visibilitas yaitu : public, protected, dan private. Selain visibilitas, method atau properti dapat dinyatakan sebagai statis, yang memungkinkan objek, method, atau property untuk diakses tanpa inisialisasi class.

Property dan Method Public

Semua property dan method yang Anda gunakan selama ini adalah public dan ini artinya property dan method dapat diakses dimana saja, baik di dalama maupun di luar class. 

Property dan Method Protected

Ketika sebuah method atau property di deklarasikan protected, maka property dan method tersebut hanya dapat diakses di dalam class itu sendiri atau dalam class turunan.

Kita akan mencoba membuat salah satu method dengan visibilitas protected, dan kita akan mencoba mengaksesnya dari luar class. Sebagai contoh, kita gunakan method getProperty().

<?php
    class ClassIrnanto {
        public $prop = “isi properti ClassIrnanto”;

        public function __construct(){
            echo ‘Class “‘, __CLASS__, ‘” telah di inisialisasi !<br />’;
        }

        public function __destruct(){
            echo ‘Class “‘, __CLASS__, ‘” telah dihancurkan.<br />’;
        }

        public function __toString(){
            echo “menggunakan method toString : “;
            return $this->getProperty();
        }

        public function setProperty($nilaibaru){
            $this->prop = $nilaibaru;
        }

        protected function getProperty(){
            return $this->prop . “<br/>”;
        }
    }

    class ClassDua extends ClassIrnanto{
        public function __construct(){
            parent::__construct(); // Memanggil konstruktor kelas induk
            echo ‘Class “‘, __CLASS__, ‘” telah menimpa method construct induk !<br />’;
        }

        public function methodBaru(){
            echo “Dari methodBaru di class ” . __CLASS__ . “.<br />”;
        }
    }

    $objek = new ClassDua;

    echo $objek->getProperty();

?>

Jika Anda jalankan maka akan muncul pesan eror seperti tukisan di bawah ini.

Class “ClassIrnanto” telah di inisialisasi !
Class “ClassDua” telah menimpa method construct induk !

Fatal error: Call to protected method ClassIrnanto::getProperty() from context ” in E:\latihan php\oop\visibilityclass.php on line 40

Pesan error itu terjadi karena mencoba memanggil method dengan hak akses protected , sedangkan method protected hanya bisa dipanggil di dalam class tersebut atau class turunannya. Kita akan membuat class turunan yang memanggil method protected dari class parent seperti di bawah ini.

<?php
    class ClassIrnanto {
        public $prop = “isi properti ClassIrnanto”;

        public function __construct(){
            echo ‘Class “‘, __CLASS__, ‘” telah di inisialisasi !<br />’;
        }

        public function __destruct(){
            echo ‘Class “‘, __CLASS__, ‘” telah dihancurkan.<br />’;
        }

        public function __toString(){
            echo “menggunakan method toString : “;
            return $this->getProperty();
        }

        public function setProperty($nilaibaru){
            $this->prop = $nilaibaru;
        }

        protected function getProperty(){
            return $this->prop . “<br/>”;
        }
    }

    class ClassDua extends ClassIrnanto{
        public function __construct(){
            parent::__construct(); // Memanggil konstruktor kelas induk
            echo ‘Class “‘, __CLASS__, ‘” telah menimpa method construct induk !<br />’;
        }

        public function methodBaru(){
            echo “Dari methodBaru di class ” . __CLASS__ . “.<br />”;
        }

        public function panggilMethodProtected(){
            return $this->getProperty();
        }

    }

    $objek = new ClassDua;

    echo $objek->panggilMethodProtected();

?>

Coba Anda jalankan dan lihat hasilnya. Jika sukses, maka hasilnya akan muncul tulisan seperti di bawah ini.

Class “ClassIrnanto” telah di inisialisasi !
Class “ClassDua” telah menimpa method construct induk !
isi properti ClassIrnanto
Class “ClassIrnanto” telah dihancurkan.

Property dan Method Private

property atau method yang di deklarasikan sebagai private hanya dapat diakses dari dalam class yang mendefinisikan method dan property tersebut. Hal ini berarti bahwa jika class baru turunan dari class induk ingin memanggil atau menggunakan method atau property yang ada pada class induk, maka tidak akan bisa dijalankan.

Kita akan mencoba membuat salah satu method menjadi private di dalam class ClassIrnanto dan memanggilnya dari class ClassDua seperti di bawah ini.

<?php
    class ClassIrnanto {
        public $prop = “isi properti ClassIrnanto”;

        public function __construct(){
            echo ‘Class “‘, __CLASS__, ‘” telah di inisialisasi !<br />’;
        }

        public function __destruct(){
            echo ‘Class “‘, __CLASS__, ‘” telah dihancurkan.<br />’;
        }

        public function __toString(){
            echo “menggunakan method toString : “;
            return $this->getProperty();
        }

        public function setProperty($nilaibaru){
            $this->prop = $nilaibaru;
        }

        private function getProperty(){
            return $this->prop . “<br/>”;
        }
    }

    class ClassDua extends ClassIrnanto{
        public function __construct(){
            parent::__construct(); // Memanggil konstruktor kelas induk
            echo ‘Class “‘, __CLASS__, ‘” telah menimpa method construct induk !<br />’;
        }

        public function methodBaru(){
            echo “Dari methodBaru di class ” . __CLASS__ . “.<br />”;
        }

        public function panggilMethodProtected(){
            return $this->getProperty();
        }

    }

    $objek = new ClassDua;

    echo $objek->panggilMethodProtected();

?>

Coba jalankan script di atas dan lihat hasilnya akan muncul seperti di bawah ini.

Class “ClassIrnanto” telah di inisialisasi !
Class “ClassDua” telah menimpa method construct induk !

Fatal error: Call to private method ClassIrnanto::getProperty() from context ‘ClassDua’ in E:\latihan php\oop\visibilityclass.php on line 33

Property dan Method Static

Method atau property yang dideklarasikan static dapat diakses tanpa terlebih dulu instantiate class. Anda hanya menyediakan nama class, lingkup operator resulusi (scope resolution operator), dan method atau property.

Kita akan mencoba menggunakan property sataic seperti source code di bawah ini.

<?php
    class ClassIrnanto {
        public $prop = “isi properti ClassIrnanto”;

        public static $count = 0;

        public function __construct(){
            echo ‘Class “‘, __CLASS__, ‘” telah di inisialisasi !<br />’;
        }

        public function __destruct(){
            echo ‘Class “‘, __CLASS__, ‘” telah dihancurkan.<br />’;
        }

        public function __toString(){
            echo “menggunakan method toString : “;
            return $this->getProperty();
        }

        public function setProperty($nilaibaru){
            $this->prop = $nilaibaru;
        }

        private function getProperty(){
            return $this->prop . “<br/>”;
        }

        public static function tambahSatu(){
            return “Nilai count adalah ” . ++self::$count . “<br />”;
        }
    }

    class ClassDua extends ClassIrnanto{
        public function __construct(){
            parent::__construct(); // Memanggil konstruktor kelas induk
            echo ‘Class “‘, __CLASS__, ‘” telah menimpa method construct induk !<br />’;
        }

        public function methodBaru(){
            echo “Dari methodBaru di class ” . __CLASS__ . “.<br />”;
        }

        public function panggilMethodProtected(){
            return $this->getProperty();
        }

    }

    do{
        // panngil tambahSatu tanpa instantiate/inisialisasi ClassIrnanto
        echo ClassIrnanto::tambahSatu();
    } while ( ClassIrnanto::$count < 10 );

?>

Jika Anda jalan script di atas dan benar maka hasil tampilannya akan seperti di bawah ini

Nilai count adalah 1
Nilai count adalah 2
Nilai count adalah 3
Nilai count adalah 4
Nilai count adalah 5
Nilai count adalah 6
Nilai count adalah 7
Nilai count adalah 8
Nilai count adalah 9
Nilai count adalah 10

Catatan : Ketika mengakses property static, maka variabel dengan tanda dollar “$” diletakkan setelah scope resolution operator (lingkup operator resulusi)

Gaya pemrograman berorientasi objek bila diterapkan dengan benar maka akan membantu Anda dalam mempermudah maintenance procedural code dan akan menghemat waktu pengembangan.

Cukup panjang kan pembahasan Object Oriented Programming – OOP PHP untuk Pemula yang telah saya bahas di atas, semoga artikel ini bisa membantu Anda dalam memahami OOP lebih dalam lagi.

Belum ada komentar untuk “Object Oriented Programming – OOP PHP untuk Pemula”

Tinggalkan Komentar