PHP4 sudah memiliki sintaks kelebihan beban untuk membuat pemetaan ke model objek eksternal, seperti Java dan COM. PHP5 menghadirkan kelebihan beban berorientasi objek yang kuat, memungkinkan pemrogram membuat perilaku khusus untuk mengakses properti dan metode panggilan
. __set, dan __call. Ketika mesin Zend mencoba mengakses anggota dan tidak dapat menemukannya, PHP akan memanggil metode ini.
Dalam contoh di Gambar 1, __get dan __set mengganti semua Akses ke array variabel atribut menerapkan jenis pemfilteran apa pun yang Anda inginkan. Misalnya, skrip dapat menonaktifkan pengaturan nilai atribut, memulai dengan awalan tertentu, atau menyertakan jenis nilai tertentu.
Metode __call menggambarkan bagaimana Anda dapat Memanggil metode yang tidak ditentukan Saat Anda memanggil metode yang tidak ditentukan , nama metode dan parameter yang diterima oleh metode tersebut akan diteruskan ke metode __call, dan PHP meneruskan nilai __call kembali ke metode yang tidak ditentukan.
Overloading tingkat pengguna
<?php
kelas Overloader
{
pribadi $properties = array();
fungsi __get($property_name)
{
if(isset($ini->properti[$nama_properti]))
{
return($ini->properti[$nama_properti]);
}
kalau tidak
{
kembali(NULL);
}
}
fungsi __set($nama_properti, $nilai)
{
$ini->properti[$nama_properti] = $nilai;
}
fungsi __panggilan($nama_fungsi, $args)
{
print("Memanggil $function_name()n");
print("Argumen : ");
print_r($args);
kembali(BENAR);
}
}
$o = new Overloader();
//panggil __set() memberikan nilai ke variabel atribut yang tidak ada dan mengaktifkan __set()
$o->dynaProp = "Konten Dinamis";
//panggil __get() aktifkan __get()
print($o->dynaProp . "n");
//panggil __call() aktifkan __call()
$o->dynaMethod("Leon", "Zeev");
?>
Pemuatan otomatis kelas
Ketika Anda mencoba menggunakan kelas yang tidak terdefinisi, PHP akan melaporkan kesalahan fatal. Solusinya adalah dengan menambahkan kelas, yang dapat dimasukkan ke dalam file Menyediakan fungsi pemuatan otomatis untuk kelas, yang dapat menghemat waktu pemrograman. Saat Anda mencoba menggunakan kelas yang belum diatur oleh PHP, ia akan mencari fungsi global __autoload parameter adalah nama kelas.
Contoh Gambar 2 mengilustrasikan bagaimana __autoload digunakan. Ini mengasumsikan bahwa setiap file di direktori saat ini berhubungan dengan suatu kelas. Ketika skrip mencoba untuk menghasilkan sebuah instance dari kelas Pengguna, PHP akan mengeksekusi __autoload Script Kelas Pengguna didefinisikan dalam class_User.php. Terlepas dari apakah panggilannya dalam huruf besar atau kecil, PHP akan mengembalikan nama
huruf
kecil
//mendefinisikan fungsi pengisian otomatis
fungsi __muat otomatis($kelas)
{
include("class_" .ucfirst($class) . ".php");
}
//gunakan kelas yang harus dimuat secara otomatis
$u = Pengguna baru;
$u->nama = "Leon";
$u->namacetak();
?>