OOP Pada PHP : Pengenalan Scope Resolution Operator

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.

OOP PHP - Scope Resolution Operator

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..:)

Artikel versi PDF bisa dilihat disini :
http://www.docstoc.com/docs/101750808/Scope-Resolution-Operator

Iklan

9 thoughts on “OOP Pada PHP : Pengenalan Scope Resolution Operator

  1. mungkin kita perlu tau, apakah contoh kode di atas menggunakan php5 atau php4?

    kalo php5, ga bisa dong method yang ga static dipanggil secara static. gunakan error_reporting(E_ALL | E_STRICT); untuk melihat error atau notice tambahan pada env development.

Silahkan Komentar...

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s