Dokumen tersebut membahas konsep-konsep seperti overloading, overriding, dan final class/method dalam PHP beserta contoh kodenya. PHP tidak sepenuhnya mendukung overloading seperti bahasa lain namun menyediakan magic method untuk keperluan serupa."
2. Konsep Overloading ala PHP
PHP tidak mendukung overloading!!!
“Dalam benak programmer Java, C++, C#
dan sejenisnya”
3. Konsep Overloading ala PHP
Overloading adalah kemampuan untuk mendeklarasikan
beberapa method dengan nama yang sama tetapi masing-
masing memiliki jumlah dan tipe argumen yang berbeda.
PHP tidak membolehkan hal tersebut!! Lalu mengapa di
dokumentasi PHP terdapat sebuah halaman yang
menjelaskan tentang overloading di
PHP: http://php.net/manual/en/language.oop5.overloadin
g.php
4. Konsep Overloading ala PHP
yang disebut overloading oleh PHP adalah sesuatu yang mirip seperti methodMissing() di Groovy
yang sering dipakai untuk keperluan meta programming. PHP menyediakan magic method seperti
_ _set(), _ _get(), _ _isset(), _ _unset(), _ _call() dan _ _callStatic(). Mereka akan dipanggil bila
programmer mengakses property atau method yang belum pernah dideklarasikan sebelumnya.
Tentu saja overloading dengan cara seperti ini tentunya jauh lebih repot dibandingkan dengan
Java dan C++, terutama bila yang perlu di-overload hanya beberapa method. Sebagai contoh,
saya dapat melakukan ini di Java:
5. Konsep Overloading ala PHP
public class Pelanggan {
public void pesan(Item item) {}
public void pesan(List<Item> items) {}
public void pesan(Item item, Integer jumlah, BigDecimal harga) {}
}
7. Properti Overloading
Dalam PHP ada empat properti overloading, yaitu:
◦ public void __set ( string $name , mixed $value )
◦ public mixed __get ( string $name )
◦ public bool __isset ( string $name )
◦ public void __unset ( string $name )
Keterangan :
◦ __set() dijalankan ketika menulis data pada properti yang tidak dapat diakses.
◦ __get() digunakan untuk membaca data dari properti yang tidak dapat diakses.
◦ __isset() dipicu dengan memanggil method isset() atau empty() pada properti yang tidak dapat diakses.
◦ __unset() dipanggil saat method unset() digunakan pada properti yang tidak dapat diakses.
8. Properti Overloading
Argumen $name adalah nama dari properti yang sedang diakses dan $value pada method
__set() merupakannilai yang diberikan pada properti dengan nama $name.
Properti overloading hanya bekerja dalam konteks objek . Magic method ini tidak akan dipicu
dalam konteks statis . Oleh karena itu method ini tidak boleh dinyatakan sebagai static . Pada
PHP 5.3.0 , peringatan akan muncul jika salah satu magic method overloading dinyatakan
sebagai static .
9. Method Overloading
Dalam PHP ada dua method ovrloading, yaitu :
◦ public mixed __call ( string $name , array $arguments )
◦ public static mixed __callStatic ( string $name , array $arguments )
Keterangan :
◦ __call() dipicu ketika memanggil method yang tidak dapat diakses didalam object
◦ __callStatic() dipicu ketika memanggil method yang tidak dapat diakses didalam static
Argumen $name adalah nama dari method yang dipanggil dan $arguments merupakan
enumerasi array yang berisi parameter yang dilewatkan pada method $name.
10. Overriding
Override merupakan cara untuk mendefinisikan ulang Method yang sudah di buat sebelumnya
dalam Class.
Override dilakukan ketika suatu Class dilakukan Inheritance, yang berbeda hanya nilai atributnya
saja.
12. Final Method dan Final Class
Dalam membuat desain class, kita sering menurunkan sebuah class kepada class lain, atau yang
dikenal dengan inheritance/pewarisan. Pemrograman objek juga membolehkan kita untuk
menimpa’ method milik parent class dengan method milik child class. Proses menimpa
method atau dikenal dengan istilah overridden method ini dilakukan dengan cara membuat nama
method yang sama dengan nama method yang ada di dalam parent class.
13. Final Method dan Final Class
Bagaimana jika kita menginginkan sebuah mekanisme untuk melarang class anak untuk
membuat method yang akan menimpa method class induk? Atau bahkan melarang sebuah class
untuk diturunkan sama sekali? Untuk keperluan ini, pemrograman objek PHP menggunakan
keyword: final
Dengan menambahkan keyword final kepada sebuah method, maka method tersebut tidak dapat
didefenisikan ulang di dalam child class. Dan jika sebuah class ditambahkan keyword final,
maka class tersebut tidak bisa diturunkan sama sekali. Inilah pengertian dari final
method dan final class.
14. Final Property
PHP tidak mendukung terhadap keyword final yang digunakan untuk property / member