Apa maksudnya ? Mari kita bahas pelan-pelan!
Modifier merupakan sebuah cara bagaimana data diperlakukan. Apakah data tersebut bisa diakses bebas atau tidak dan apakah data itu hanya bisa di akses oleh bagian-bagian tertentu saja dsb. Modifier berada di sebelah kiri sebelum deklarasi pembuatan properties dan methods dari class.
Dalam pemrograman berbasis Object Oriented Programming, dikenal tiga buah modifier. Ketiga modifier tersebut yaitu :
- Public
- Private
- Protected
Pertama, kita buka kembali hasil praktik kita seperti di artikel sebelumnya terkait dengan setter-getter. Kita sudah memiliki kode :
Kita hilangkan semua method kita sehingga menjadi :
Sip. Kita kembali ke awal artikel terkait oop kita ini. Kita memiliki class Buku {}, beberapa properties ( $nama, $penulis, $penerbit dan $tahunTerbit ) dan sebuah objek $bukuSejarah.
Dimana modifiernya ? Belum!
Tapi sebenarnya secara tidak langsung, dalam baris kode tersebut telah ada yang dinamakan modifier. Kata var yang berada di sebelah kiri properti menunjukkan bawa properti tersebut bersifat public
Sekarang mari kita bahas satu per satu modifier ini...
Pertama, Public
Merupakan modifier yang memungkinkan sebuah member class dapat di akses bebas. Baik dari dalam class ataupun dari luar class.
Kedua, Private
Merupakan modifier yang membuat sebuah member hanya dapat di akses dari dalam class dan objek yang dibuat dari class turunan, tidak diperkenankan untuk mengakses member class dari objek yang di instance langsung dari class induk ( error ).
Ketiga, Protected
Merupakan modifier yang dimana membernya hanya dapat diakses menggunakan method setter dan getter di kelas itu sendiri dan sub class / turunan dari class tersebut.
Untuk lebih jelasnya, mari kita praktikkan langsung dengan. Kita beri properti $nama sebuah modifier public sehingga menjadi :
Dengan objek yang ada yaitu $bukuSejarah, kita panggil langsung property $nama untuk diberi nilai dan tampilkan hasilnya dengan perintah echo.
Mari lanjutnya kita lihat hasilnya di browser!
Tampil dan biasa aja ya 😄
Kode lengkap :
Selanjutnya, mari kita lakukan uji dengan menambahkan modifier private di property $penulis.
Lakukan hal yang sama seperti property $nama, yaitu berikan value kemudian tampilkan dengan echo. Kode kita menjadi :
Sampai disini, kita cek kode kita dengan melihat hasilnya di browser. Bagaimana hasilnya ?
Wah, error 😖Berada di luar wilayah class Buku yang dibatasi oleh kurung kurawal {}, beda dengan modifier sebelumnya ( public ). Dimana dengan membuat member class public akan bisa di akses baik melalui dalam class atau luar scoop class.
Coba baca kembali terkait dengan modifier private diatas
Sampai sini sudah ada gambaran terkait perbedaan public dan private ? Kalau belum coba baca kembali kemudian sambil di praktikkan artikel dari awal. Lalu bagaimana solusinya supaya tidak muncul :
Uncaught Error: Cannot access private property Buku::$penulis
Padahal ingin tetap menggunakan modifier private!? Disinilah kita bisa memfungsikan adanya method setter dan getter. Dengan setter kita memberikan nilai pada $penulis dan dengan getter kita menampilkannya.
Kita buat setter terlebih dahulu untuk $penulis :
Selanjutnya, kita buat getter :
Di bagian pemanggilan dengan objek ini :
Kita ganti dengan memanggil setter diikuti dengan getter menjadi :
Nah sekarang coba cek dengan browser!
Yeeee, berhasil! 😎
Baca kembali : Mengenal Setter | Menggenal Getter
Perlu diingat! Bahwa setter dan getter yang digunakan untuk mengolah property dengan modifier private haruslah memiliki modifier public. Bagaimana jika dibuat private pula ? Coba saja dan cek bagaimana hasilnya :)
Buktikan ya, ubah modifier method dengan private :
Hasilnya :
Yaaaa muncul lagi kalimat :
Fatal error: Uncaught Error: Call to private method Buku::setPenulis() from global scope in...
Paham sampai sini ?
ℹ Method yang mengakses member class yang private untuk di tampilkan usahakan untuk selalu memiliki modifier public
Kode lengkap :
Terakhir, kita bahas terkait dengan Protected
Sekarang mari kita ubah member dari class Buku {}, yaitu $penerbit memiliki modifier protected.
Bentuk class Buku {} menjadi :
Lengkap dengan tiga modifier. Mari kita akses property $penerbit langsung :
Hasilnya :