Cara menggunakan encapsulation php

Panduan Praktis OOP di PHP – Rosihan Ari Yuana – http:blog.rosihanari.net Halaman 19 dari 39 Perhatikan function __constructx, y { this-merek = x; this-harga = y; } Function tersebut kita buat 2 parameter, dimana x menyatakan merek kendaraan, dan y adalah harganya. Selanjutnya, perintah this-merek = x; Digunakan untuk setting property merek kendaraan berdasarkan nilai x. Demikian juga perintah this-harga = y; Untuk setting property harga kendaraan berdasarkan nilai y. Selanjutnya, bagaimana cara melakukan instantisasi sekaligus setting propertiesnya? Perhatikan script berikut ini. contoh.php ?php include class-kendaraan.php; kendaraan1 = new kendaraanYamaha MIO, 10000000; echo Harga dari .kendaraan1-bacaMerek. adalah Rp. .kendaraan1- bacaHarga; ?

10. Encapsulation

Di dalam dasar-dasar OOP, ada istilah encapsulation. Istilah ini terkait dengan aksesibilitas properties dalam suatu class. Dengan encapsulation ini, kita bisa mengatur sebuah properti apakah hanya bisa diakses dalam class tersebut saja, atau tidak. Aksesibilitas properties dalam encapsulation ini ada tiga sifat: • Public : properti dapat diakses darimanapun • Private : properti hanya dapat diakses dari dalam class saja Panduan Praktis OOP di PHP – Rosihan Ari Yuana – http:blog.rosihanari.net Halaman 20 dari 39 • Protected : properti hanya dapat diakses dari dalam class atau class turunan inheritanced class Untuk membedakan ketiganya, perhatikan contoh berikut ini class-kendaraan.php ?php class kendaraan { protected jumlahRoda; public warna; public bahanBakar; public harga; private merek; function statusHarga { if this-harga 50000000 status = Mahal; else status = Murah; return status; } function setMerekx { this-merek = x; } function setHargax { this-harga = x; } function bacaMerek { return this-merek; } function bacaHarga { return this-harga; } function __constructx, y { this-merek = x; this-harga = y; } } ? Panduan Praktis OOP di PHP – Rosihan Ari Yuana – http:blog.rosihanari.net Halaman 21 dari 39 Perhatikan class di atas. Untuk properti ‘warna’, ‘bahan bakar’ dan ‘harga’ dibuat sebagai public properties. Sedangkan untuk properti ‘jumlahRoda’ dan ‘merek’, masing-masing sebagai protected dan private properties. Selanjutnya, perhatikan script contoh berikut ini contoh.php ?php include class-kendaraan.php; kendaraan1 = new kendaraanYamaha MIO, 10000000; echo Nama merek : .kendaraan1-merek; ? Dalam script di atas, setelah proses instantisasi dan setting properti untuk obyek kendaraan1, akan dilakukan pengaksesan ke properti merek secara langsung tanpa method, dengan memberikan perintah kendaraan1-merek Apa yang terjadi jika script di atas dijalankan? Ternyata akan muncul error Fatal error: Cannot access private property kendaraan::merek Hal ini terjadi karena properti merek bersifat private, sehingga properti ini tidak bisa diakses dari luar class. Bagaimana dengan akses ke properti harga secara langsung? Perhatikan script berikut ini contoh.php ?php include class-kendaraan.php; kendaraan1 = new kendaraanYamaha MIO, 10000000; echo Harga : .kendaraan1-harga; ? Ternyata jika script di atas dijalankan,bisa memunculkan harga dari Yamaha Mio. Nah... yang menjadi pertanyaan, apakah bisa kita mengakses sebuah properti yang sifatnya private dalam class dari luar? Jawabnya adalah bisa, namun tidak dilakukan secara langsung dengan mengakses properti nya namun menggunakan method. Sebagai contoh, misalkan kita ingin mengakses properti merek yang sifatnya private, maka kita bisa menggunakan method bacaMerek. contoh.php Panduan Praktis OOP di PHP – Rosihan Ari Yuana – http:blog.rosihanari.net Halaman 22 dari 39 ?php include class-kendaraan.php; kendaraan1 = new kendaraanYamaha MIO, 10000000; echo Harga : . kendaraan1-bacaMerek; ? Oya, bagaimana dengan deklarasi properties menggunakan ‘var’ seperti pada contoh-contoh di awal, misalnya: class kendaraan { var jumlahRoda; var warna; var bahanBakar; var harga; var merek; . . . } Penggunaan ‘var’ di depan nama properties, secara otomatis akan bersifat sebagai public. Berikutnya, muncul pertanyaan apakah yang bisa dibuat encapsulation dg sifat private, protected dan public ini hanya untuk properties saja? Jawabnya adalah TIDAK, sebuah function atau method pun bisa diterapkan hal ini. Sebagai contoh misalkan kita buat method statusHarga sebagai private method. class-kendaraan.php ?php class kendaraan { protected jumlahRoda; public warna; public bahanBakar; public harga; private merek; private function statusHarga { if this-harga 50000000 status = Mahal; else status = Murah; return status; } function setMerekx { Panduan Praktis OOP di PHP – Rosihan Ari Yuana – http:blog.rosihanari.net Halaman 23 dari 39 this-merek = x; } function setHargax { this-harga = x; } function bacaMerek { return this-merek; } function bacaHarga { return this-harga; } function __constructx, y { this-merek = x; this-harga = y; } } ? Kemudian kita cek, apakah efek jika sebuah method dibuat private dengan memanggil method statusHarga di dalam script. contoh.php ?php include class-kendaraan.php; kendaraan1 = new kendaraanYamaha MIO, 10000000; echo Status harga : . kendaraan1-statusHarga; ? Jika script di atas dijalankan, maka akan muncul pesan error sbb: Fatal error: Call to private method kendaraan::statusHarga from context Yang menginformasikan bahwa method statusHarga bersifat private sehingga tidak bisa diakses dari luar class. Panduan Praktis OOP di PHP – Rosihan Ari Yuana – http:blog.rosihanari.net Halaman 24 dari 39

11. Pewarisan Inheritance