Pemrograman Object Oriented PHP Bagian II

Khairu Aqsara Sudirman

Khairu Aqsara Sudirman

Dec 25, 2019 — 5 mins read
Photo by <a href="https://unsplash.com/@markusspiske" target="_blank">Markus Spiske</a> on <a href="https://unsplash.com" target="_blank">Unsplash</a>

Photo by Markus Spiske on Unsplash

Melanjutkan dari pembahasan sebelumnya, kali ini kita akan mencoba lebih mendalami OOP pada PHP, beberapa bahasan pada tulisan kali ini kita akan mencoba mengulas tentang Constructor dan Destructor, Pewarisan, Static Property dan Method,Self dan $this dan Interface beserta Trait dalam PHP.

Constructor dan Destructor

Php menyediakan banyak sekali fungsi bawaan secara default, begitu juga dalam OOPnya, terdapat sebuah fungsi atau method yang ekan berjalan secara otomatis ketika sebuah class di buat __construct dan dimatikan __destruct, __construct akan otomatis dijalankan ketika sebuah class diinisialisasikan dan __destruct akan otomatis dijalankan ketika object dari sebuah class dihapus atau berhenti dijalankan, mari kita perhatikan contoh berikut.

<?php 
class Orang{
	public class __construct(){
		echo "dijalankan oleh constructor"
	}
	public class __destruct(){
		echo "dijalankan oleh destructor"
	}
}
$run = new Orang;
// Output
// dijalankan oleh constructor
// dijalankan oleh destructor

Jika kita perhatikan hasil eksekusi program diatas, kita hanya menginisialisasikan class orang, secara otomatis fungsi __construct() dan __desctruct() dijalankan.

Pewarisan (Obejct Inheritance)

Pewarisan atau biasa disebut juga dengan Inheritance merupakan sebuah sifat dari OOP yang dapat mewariskan method yang memiliki visibility public atau protected kepada class lain, konsep dari pewarisan ini cukup mudah dipahami, misalkan kita memiliki class untuk menangai pengolahan data pada database, kemudian kita memiliki class lain yang memiliki fungsi sama, yaitu untuk mengolah database, kita bisa menurunkan atau mewariskan fungsi-fungsi dari class sebelumnya, sehingga kita tidak perlu membuat fungsi yang sama lagi. Untuk lebih jelasnya, mari kita perhatikan contoh kode dibawah ini:

<?php 
class User{
	public function generatePassword($char){
		return "Pass : ".$char;
	}
}
class Member extends User{
	public function passwordMember(){
		// Panggil method yang ada pada class User
		return $this->generatePassword("abcd");
	}
}
$member = new Member();
$password = $member->passwordMember();
echo $password;
// Atau bisa langsung memanggil method dari Class User
$password = $member->generatePassword("abcd");
echo $password;
//Output
// Pass : abcd
// Pass : abcd

Dari program diatas kita bisa melihat bahwa class Member mewarisi fungsi dari class User

Static Property dan Static Method

Static Property dan Static Method merupakan sebuah Property dan Method yang dapat dipanggil tanpa menginisialisasikan class-nya terlebih dahulu.Untuk mengakses static Property dan Static Method kita tidak menggunakan $this tetapi meggunakan keyword self, nanti akan kita bahas lebih detail tentang kedua keyword ini, mari kita lihat penjelasnya dalam bentuk kode, agar lebih mudah untuk dipahami.

<?php 
class User{
	public static $alamat = "Yogyakarta";
	public function tampilkanAlamat(){
		echo self::$alamat;
	}	
}
class Member extends User{
	public function alamatMember(){
		echo parent::$alamat;
	}
}
$member = new Member;
// Panggil Static Property
echo $member::$alamat;
$member->tampilkanAlamat();
$member->alamatMember();
// Output semuanya adalah Yogyakarta.

Dari program diatas, kita bisa melihat cara dan implementasi dari Static Property, baik didalam class nya sendiri ataupun dalam pewarisan.mungkin teman-teman akan sedikit asing dengan keyword parent ataupun self, tidak perlu bingung, cukup memahami program diatas teman-teman pasti bisa menyimpulkan sendiri kegunaan dari keyword self dan parent, selanjutnya mari kita perhatikan lagi program sederhana berikut ini:

<?php 
class User{
	public static function tampilkanAlamat(){
		echo "Sleman Yogyakarta";
	}	
}
User::tampilkanAlamat();
// Sleman Yogayakarta

Nah sekarang lebih jelas dan terang benderang dong tentunya perbedaan Static Property dan Static Method ? seharusnya teman-teman tidak akan bingung lagi jika menemukan model kode seperti diatas, karena banyak PHP framework sangat sering menggunakannya.

Perbedaan Self Dan $this

Dalam konteks yang sangant sederhana, dari penulisan dan arti kata saja kita sudah bisa membedakan kedua keyword tersebut, $this dan self dalam bahasa pemrograman bisa dikatakan sama tetapi berbeda.$this dan self sama-sama menerangkan posisi bagi diri mereka sendiri, perbedaanya $this akan mereferensikan property atau method pada current object sedangkan self mereferensikan pada current class.

coba teman-teman perhatikan lagi pada bagian Pewarisan, teman-teman pasti faham maksud nya.Masih bingung ? mari kita lihat program sederhana berikut.

<?php
class Polisi{
	public function saya(){
		echo "saya polisi";
	}
	public function sayaAdalah(){
		$this->saya();
	}	
}

class Polwan extends Polisi{
	public function saya(){
		echo "saya polwan";
	}	
}
$aparat = new Polwan;
$aparat->sayaAdalah();
// saya polwan

Jika program diatas dijalankan, outputnya adalah saya polwan, class Polwan merupakan turunan dari class Polisi, kedua class ini memiliki method saya(), tetapi ketika class Polwan diinisialisasikan dan memanggil method sayaAdalah() yang terpanggil adalah method saya() yang ada pada class Polwan, padahal method sayaAdalah() berada di class Polisi, kenapa ? karena class yang diinisialisaikan adalah class Polwan, ketika class tersebut dijalankan dan memanggil method yang ada pada parent class yaitu class Polisi keyword $this akan mereferensikan class Polwan bukan class Polisi (keyword $this mereferensikan current object)

Mari kita modifikasi program diatas agar lebih mudah untuk memahaminya.

<?php
class Polisi{
	public function saya(){
		echo "saya polisi";
	}
	public function sayaAdalah(){
		self::saya();
	}	
}
class Polwan extends Polisi{
	public function saya(){
		echo "saya polwan";
	}
}
$aparat = new Polwan;
$aparat->sayaAdalah();
// saya polisi

Kali ini hasilnya adalah saya polisi bukan saya polwan, kenapa ? karena keyword $this pada class Polisi kita ganti menjadi keyword self, yang artinya ketika kita menginisialisasikan class Polwan dan memanggila method sayaAdalah() dari parent Class-nya maka yang terpanggil adalah method saya() pada parent class, karena keyword self mereferensikan pada current class bukan current object.

Object Interface

Well, kali ini mungkin memang terdengar sedikit asing, ya memang terkadang sangat jarang menggunakannya. tapi kita belum belajar OOP jika tidak mempelajari Object interface, mudah-mudahan teman-teman tidak bingung.

Sederhanya, Object interface adalah template atau cetak biru atau panduan dari sebuah class, dan semua isi dari interface harus di-implenetasikan ulang oleh class yang menggunakan interface, kata implementasi disini mengisyaratkan jika kita menggunakan object interface pada sebuah class, maka kita harus membuat ulang semua method atau property yang ada pada interface tersebut, sesuai dengan kegunaanya, Object interface adalah template bagi sebuah class, syarat-syarat dari sebuah interface adalah:

1. Menggunakan keyword interface
2. Method dalam interface hanya berupa signature
3. Diimplementasikan dengan keyword implements
4. Semua method interface harus di-implenetasikan ulang
5. Method dan class yang mengimplentasikan Interface harus public

Agar lebih mudah memahaminya, mari kita lihat program berikut:

<?php
interface Nasabah{
	public function dataDiri($data);
	public function dataRekening($rekening);
	public function saldo();	
}
class User implements Nasabah{
	public function dataDiri($data){
		// proses $data
	}
	public function dataRekening($rekening){
		// proses $rekening
	}	
	public function saldo(){
		//proses saldo
	}
}

Dari program diatas terlihat jelas kan apa itu interface dan kegunaanya ? secara sederhanya interface ini ada untuk membuat standarisasi dari sebuah class.

Trait

Trait adalah sebuah fitur pada OOP yang memungkinkan kita bisa menggunakan method pada hirarki class yang berbeda-beda, sederhanya anggap saja trait ini merupakan helper pada pemrograman prosedural, mari kita langsung melihat kode saja agar lebih mudah untuk memahami cara kerja dan kegunaan dari trait ini.

<?php
trait Helper{
	public function generatePassword(){//kode}
	public function deleteFolder($path){//delete folder}
}
class User{
	use Helper;
}
$user= new User;
$user->generatePassword();
$user->deleteFolder('/tmp');

Mudah bukan ? sederhanya Trait ini adalah kumpulan method yang bisa kita gunakan berulang kali (reuse) sehingga kode program lebih mudah untuk dirawat.

Sekian dulu Tulisan tentang OOP pada PHP, semoga tulisan yang sederhana ini bisa membantu teman-teman untuk belajar OOP pada PHP.

linux laravel php
Read this next

Find Topology Error With PostGIS

Topology errors can be fixed quickly using the Fix Topology Error tool, This tool allows you to select a topology error and choose from a nu...

You might enjoy

PHP Fungsi Terbilang

Package sederhana untuk merubah angka menjadi bentuk terbilang dalam bahasa indonsia dengan phpcomposer require ezadev/terbilang penggunaa...