ZeDs's Blog
Perbedaan php4 dan php5
Salah satu kelebihan php5 adalah php5 dapat menangani OOP (Object Oriented Programming) lebih baik dari pendahulunya. Ini juga yang menjadi alasan mengapa nomor versi php lompat ke versi 5. Berikut beberapa perbedaannya.
Pada php4, jika kita meng-copy sebuah object, maka object tersebut akan terduplikat menjadi 2 dengan property yang sama. Sedangkan pada php5, object yang baru hanya berupa referensi ke object aslinya.
Contoh:
class Contoh
{
var $saya = 'ganteng';
}
$obj1 = new Contoh();
echo $obj1->saya;
// Hasil: Ganteng
$obj2 = $obj1;
// Meng-copy object
$obj2->saya = 'jelek';
echo $obj2->saya;
// Hasil: jelek
echo $obj1->saya;
// Pada php4, hasil: ganteng
// Pada php5, hasil: jelek
?>
Tetapi jika kita benar-benar ingin menduplikat suatu object, kita dapat melakukannya dengan 'clone'.
Contoh:
class Contoh
{
var $saya = 'ganteng';
}
$obj1 = new Contoh();
$obj2 = clone $obj1;
?>
Visibility Property
Perbedaan berikutnya adalah kita dapat menentukan visibility sebuah property dengan menambahkan prefix private/public/protected pada tiap pendefinisian property untuk melindungi akses property. Ini berguna pada class untuk API misalnya, yang pemanggilan propertynya berasal dari perintah client, agar property yang terlindungi tidak dapat sembarangan diakses.
private : property hanya bisa diakses dari class itu sendiri
protected : property hanya bisa diakses dari class tersebut dan semua sub-classnya
public : property bisa diakses dari mana saja, termasuk dari luar class (sama dengan penggunaan 'var' pada php4)
Constructor
Jika pada php4 untuk mendefinisikan suatu fungsi constructor suatu class kita harus membuat nama fungsi tersebut sama dengan nama classnya, pada php5 kita dapat mendefinisikannya menggunakan __construct.
Destructor
Jika kita mendefinisikan fungsi __destruct() pada suatu class, fungsi ini akan dipanggil saat object tersebut dihapus (didestroy), atau pada saat shutdown.
Selain itu, masih banyak kelebihan php5 dalam hal penanganan object. Seperti class abstraction, class constants, autoloading object, dan lain lain.


