OOP pada PHP mengenal istilah Scope Resolution Operator atau biasa disebut “Paamayim Nekudotayim” kadang juga disebut “double colon”. Scope Resolution Operator dalam OOP pada PHP biasa digunakan untuk mengakses property dan method pada suatu class tanpa harus instansiasi class yang ingin digunakan. Pada bahasan Scope Resolution Operator kita akan mengenal keyword {parent, self, dan static}.

Untuk lebih jelas lagi, saya coba buatkan test kelas untuk menggambarkan apa itu Scope Resolution Operator.
<?php
class test {
public $job = "PHP Developer";
public function sebut_nama() {
return "adiputra";
}
public function sebut_kerjaan() {
return $this->job;
}
}
echo test::sebut_nama(); // output : "adiputra"
?>
Pada contoh diatas, Saya dapat mengakses method dari suatu class secara langsung tanpa harus instansiasi class terlebih dahulu. Aturan nya mudah, kita hanya menyebutkan nama class diikuti dengan nama method atau property. Lalu apabila saya menambahkan code seperti dibawah ini.
<?php
class test {
public $job = "PHP Developer";
public function sebut_nama() {
return "adiputra";
}
public function sebut_kerjaan() {
return $this->job;
}
}
echo test::sebut_nama(); // output : "adiputra"
echo test::sebut_kerjaan(); // error
?>
Apabila saya memanggil method sebut_kerjaan() maka akan memunculkan error seperti gambar dibawah ini:

Error tersebut muncul karna saat memanggil method sebut_kerjaan() terdapat keyword $this dimana keyword tersebut merupakan keyword pendefinisian suatu object. Karna kita menggunakan scope resolution operator (tidak membuat object) maka muncul lah error tersebut.
Telah dijelaskan diatas sebelumnya bahwa scope resolution operator tidak lepas dari keyword parent, self dan static. Berikut ini saya coba jelaskan lagi cara penggunaan pada kasus pembuatan class e-commerce. Saya buatkan class Produk seperti code dibawah ini:
<?php
class Produk {
const DISKON = 20;
public static function get_diskon() {
return self::DISKON;
}
}
?>
Terdapat suatu constanta Diskon, untuk kasus sederhana, setiap produk memiliki diskon tetap yaitu 20 {dalam bentuk persen}. Terdapat pula method get_diskon yang isi nya adalah pemanggilan value dari constanta DISKON. Terlihat terdapat keyword self yaitu pemanggilan property constanta Diskon. Keyword self biasa digunakan untuk pemanggilan property atau method pada class itu sendiri.
Lalu saya coba buatkan class baju.php
<?php
class baju extends produk {
public static $_dijual = "ya";
private $_ukuran;
private $_warna;
public function set_ukuran($ukuran) {
$this->_ukuran = $ukuran;
}
public function get_ukuran() {
return $this->_ukuran;
}
public function set_warna($warna) {
$this->_warna = $warna;
}
public function get_warna() {
return $this->_warna;
}
public static function get_diskon() {
return parent::get_diskon();
}
public static function get_dijual() {
return self::$_dijual;
}
}
?>
Yang mesti ditekankan pada code diatas adalah penggunaan self dan penggunaan parent. Pada method get_diskon, terdapat keyword parent dimana berfungsi untuk memanggil method get_diskon yang ada pada class parent yaitu class Produk. Jadi kita dapat memanggil method parent dari class tertentu dengan scope resolution operator.
Sedangkan pada method get_dijual terdapat keyword self memanggil property $_dijual dimana property tersebut bertipe static. {keyword static akan saya jelaskan pada artikel selanjutnya, insyAllah}
Lalu saya coba jalankan dengan code dibawah ini:
<?php
include_once("produk.php");
include_once("baju.php");
$oBaju = new baju;
$oBaju->set_warna("biru");
$oBaju->set_ukuran("M");
echo $oBaju->get_warna() . "<br />";
echo $oBaju->get_ukuran() . "<br />";
echo baju::get_dijual() . "<br />";
echo baju::get_diskon() . "%<br />";
?>
Tampilan keluaran nya dapat dilihat pada gambar dibawah ini.

Begitulah konsep sederhana Scope Resolution Operator di OOP PHP. Contoh code diatas hanya untuk menjelaskan alur sederhana agar teman-teman dapat memahami lebih mudah Scope Resolution Operator.
Semoga bermanfaat..🙂
Sumber:
https://terusbelajar.wordpress.com/2011/11/05/oop-pada-php-pengenalan-scope-resolution-operator/