Bahwa class yang baik adalah yang sebisa mungkin tertutup dari luar, class tersebut hanya menunjukan public interface dalam hal ini setter dan getter untuk berinteraksi dengan class tersebut. Pembatasan semacam ini akan membatasi atau bahkan mencegah modifikasi yang dilakukan kode dari luar class terhadap private property yang ada di dalam class. 

Dengan mendeklarasikan suatu property atau method sebagai private, maka hanya public method yang berada di dalam class yang dapat berinteraksi dengan private property atau private method di dalam class tersebut. agar tetap dapat mengakses private property, maka kita memerlukan public method. Di dalam public method tersebut kita bisa memberikan kode logic  yang memperbolehkan atau melarang suatu data / akses masuk ke dalam class, tergantung dari kondisi yang kita inginkan.

Berikut ini saya saya akan membuat contoh bagaimana cara membatasi agar hanya mrk mobil jepang saja yang diperbolehkan sebagai nilai dari property $merk?

Penjelasan Skrip:

  1. Pada baris ke 5 property $merk adalah private property, jadi tidak bisa diakses secara langsung. Untuk mengubah nilainya harus memakai setMerk().
  2. Pada baris 7 sampai dengan 13 pada method setMerk() kita memiliki daftar merk mobil jepang yang disimpan pada array $merkJepang. Ketika method setMerk() dijalankan akan memeriksa nilai dari $merk, apakah termasuk dalam $merkJepang. Jika termasuk, maka nilai tersebut akan dimasukkan sebagai nilai private property $merk. jika tidak, maka private property $merk dibiarkan tidak memiliki nilai.
  3. Pada baris 22 Memberikan nilai merk dengan “BMW”, yang bukan merupakan merk mobil jepang.

Untuk melihat hasilnya silahkan teman – teman aksesnya di browser maka hasilnya akan seperti di bawh ini:

Mengapa Kita Membutuhkan Access Modifier

Karena “BMW” tidak termasuk dalam merk mobil jepang, maka setMerk() tidak akan memberikan nilai “BMW” kepada property $merk. Sehingga property $merk tetap tidak memiliki nilai. Hal ini bisa mencegah program mendapatkan data yang salah sebagai inputannya. Jadi ketika memanggil getMerk() maka tidak akan mendapatkan nilai $merk.