Memahami Tingkatan Visibilitas dalam Pemrograman OOP

Tingkatan visibilitas serta bagaimana mendefinisikan visibilitas dalam bahasa pemrograman PHP

Apa itu Visibilitas

Visibilitas adalah salah satu fitur penting yang ada pada OOP. Fitur ini mengatur hak akses terhadap property maupun method dari sebuah class. Hak akses disini berbeda dengan hak akses pada aplikasi, hak akses disini adalah hak akses yang ada pada level bahasa
pemrograman.

Visibilitas dalam OOP berperan penting dalam menjamin keamanan informasi yang terdapat pada property maupun method. Dengan fitur ini, programmer dapat membatasi dan mengatur programmer lainnya tentang bagaimana mengakses sebuah property atau method dari sebuah class atau fitur yang dibuatnya.

Tingkatan Visibilitas pada PHP

Dalam bahasa PHP, Visibilitas dibedakan menjadi 4 yaitu private, protected, public dan default atau tidak didefinisikan. Berikut adalah penjelasan masing-masing visibilitas.

Private

Visibilitas private adalah visibilitas paling rendah pada OOP. Sebuah property atau method yang diberikan visibilitas private maka property atau method tersebut hanya dapat diakses dari lingkup class dimana property atau method tersebut didefinisikan. Untuk memberikan visibilitas private pada property atau method kita dapat menggunakan keyword private didepan property atau method. Perhatikan contoh berikut:

<?php
class Mobil
{
	private $roda;
	
	public function jalan()
	{
		echo 'Mobil berjalan';
	}
} 

$avanza = new Mobil();
$avanza->roda = 4;

echo $avanza->jalan();
echo PHP_EOL;
echo $avanza->roda;
echo PHP_EOL

Bila program diatas dijalankan, maka akan muncul error PHP Fatal error: Uncaught Error: Call to private method Mobil::jalan() from context. Hal ini terjadi karena kita mencoba mengakses fungsi jalan() yang memiliki visibilitas private diluar lingkup class yaitu dipanggil dari lingkup object. Hal yang sama juga akan terjadi pada property $roda dimana property tersebut juga memiliki visibilitas private.

Untuk mengakses property atau method dalam lingkup class digunakan keyword $this yang akan dibahas secara spesifik pada bab terpisah. Perhatikan contoh berikut:

<?php
class Mobil
{
	private $roda;
	
	public function jalan()
	{
		echo 'Mobil berjalan';
	}
	
	public function jumlahRoda()
	{
		echo $this->roda;
	}
} 

$avanza = new Mobil();

echo $avanza->jumlahRoda();
echo PHP_EOL;

Protected

Sebuah property atau method yang diberikan visibilitas protected maka property atau method tersebut dapat diakses dari lingkup class dimana property atau method tersebut didefinisikan serta turunan dari class tersebut. Untuk memberikan visibilitas protected pada property atau method kita dapat menggunakan keyword protected didepan property atau method. Perhatikan contoh berikut:

<?php
class Mobil
{
	private $roda;
	
	protected function jalan()
	{
		echo 'Mobil berjalan';
	}
	
	public function jumlahRoda()
	{
		echo $this->roda;
	}
} 

$avanza = new Mobil();

echo $avanza->jumlahRoda();
echo PHP_EOL;

Bila program diatas dijalankan, maka akan muncul error PHP Fatal error: Uncaught Error: Call to protected method Mobil::jalan() from context . Hal ini terjadi karena kita mencoba mengakses fungsi jalan() yang memiliki visibilitas protected diluar lingkup class yaitu dipanggil dari lingkup object.

Public

Visibilitas public adalah visibilitas tertinggi pada OOP. Sebuah property atau method yang diberikan visibilitas public maka property atau method tersebut dapat diakses baik dari lingkup class maupun object. Untuk memberikan visibilitas public pada property atau method kita dapat menggunakan keyword public didepan property atau method. Mari kita melihat kembali contoh berikut:

<?php
class Mobil
{
	private $roda;
	
	public function jumlahRoda()
	{
		echo $this->roda;
	}
} 

$avanza = new Mobil();

echo $avanza->jumlahRoda();
echo PHP_EOL;

Method jumlahRoda() diberikan visibilitas public sehingga method tersebut dapat diakses dari luar class yaitu dalam lingkup object. Sehingga bila program diatas dieksekusi, maka akan muncul output 4 sebagaimana nilai dari property $roda.

Default atau tidak didefinisikan

Bila kita tidak mendefinisikan visibilitas pada property atau method secara eksplisit, maka PHP secara default akan memberikan visibilitas pada property atau method tersebut dengan visibilitas public. Sehingga public function jumlahRoda() sama dengan function jumlahRoda() yaitu sama-sama memiliki visibilitas public.

Tips Visibilitas

Untuk menghindari kebingungan dan menjaga konsistensi code maka ada baiknya Anda menerapkan tips berikut:

  • Definisikan visibilitas secara eksplisit.
  • Gunakan visibilitas private atau protected pada property.
  • Hindari penggunaan visibilitas public pada property, gunakan hanya jika memang benar-benar diperlukan.
  • Batasi visibilitas pada method jika memungkinkan.

Leave a Comment