Dalam PHP, kami tidak dapat secara langsung menerapkan kelebihan metode dengan metode dengan nama metode yang sama dan tanda tangan yang berbeda, karena PHP adalah tipe data yang lemah dan tidak dapat membedakan tanda tangan dengan baik. Namun, Anda dapat menggunakan metode __call () di kelas PHP untuk mengimplementasikan kelebihan metode. Ketika metode yang tidak ada di kelas dipanggil, metode __call () secara otomatis dipanggil, yang dalam bentuk __call ($ name, $ argumen) di mana $ nama adalah nama metode dan $ argumen adalah parameter tipe array.
Contoh berikut adalah menggunakan metode PHP yang berlebihan untuk secara dinamis membuat metode GET dan atur. (Dalam pemrograman berorientasi objek, properti di kelas akan ditugaskan menggunakan Get and Set, tetapi jika ada terlalu banyak properti di kelas, seperti 30, maka jika kita tidak menggunakan metode kelebihan metode, kita perlu menulis 30 metode set dan 30 metode mendapatkannya secara perlahan sendiri ...)
Salinan kode adalah sebagai berikut:
<? php
orang kelas
{
nama $ private;
Usia $ pribadi;
Alamat $ pribadi;
sekolah $ privat;
Private $ phonenum;
fungsi publik __call ($ Method, $ args)
{
$ Persiapan = strtolower (substr ($ Method, 0,3));
$ properti = strtolower (substr ($ Method, 3));
if (kosong ($ Persimpangan) || kosong ($ properti))
{
kembali;
}
if ($ persimpangan == "get" && isset ($ this-> $ property))
{
mengembalikan $ ini-> $ properti;
}
if ($ persimpangan == "set")
{
$ this-> $ properti = $ args [0];
}
}
}
$ p = orang baru ();
$ p-> setName ('lvcy');
$ p-> setage (23);
$ p-> setaddress (chengdu);
$ p-> setSchool ('uestc');
$ p-> setPhonenum ('123456');
echo $ p-> getName (). '// n';
echo $ p-> getage (). '// n';
echo $ p-> getAddress (). '// n';
echo $ p-> getschool (). '// n';
?>
Masalah ini mudah diselesaikan dengan metode __call (), daripada menulis metode get set untuk setiap properti.