Rumah >pembangunan bahagian belakang >masalah PHP >Kaedah sihir yang biasa digunakan dalam PHP (perkongsian ringkasan)
(Tutorial yang disyorkan: Tutorial video PHP)
Apabila kelas dibuat seketika
akan dipanggil apabila kelas baharu dicipta secara automatik apabila dimusnahkan
<?php class autofelix { public function __construct() { echo '我是飞兔小哥~'; } } new autofelix();Anda boleh menggunakan kaedah yang tidak ditetapkan untuk mencetuskan kaedah ini
Kaedah klon/__klon<.>
Ia akan dipanggil secara automatik apabila kelas diklon<?php class autofelix { public function __destruct() { echo '我是飞兔小哥,别销毁我~'; } } unset(new autofelix());Kaedah panggilan bukan statik/__panggilanApabila kaedah yang hendak dipanggil tidak wujud atau kebenarannya tidak mencukupi, ia akan dipanggil secara automatikSebagai contoh, saya memanggil pengubahsuaian peribadi di dalam kelas dari luar kelas
<?php class autofelix { public function __clone() { echo '我是飞兔小哥,我想克隆你~'; } } $a = new autofelix(); clone $a;Kaedah panggilan statik/__callStatic. Apabila kaedah statik untuk dipanggil tidak wujud atau kebenaran tidak mencukupi, ia akan dipanggil secara automatik Sebagai contoh, jika saya memanggil kelas di luar kelas Kaedah statik diubah suai peribadi dalaman
<?php class autofelix { private function say() { echo '我是飞兔小哥~'; } public function __call($name, $arguments) { echo '你无权调用' . $name . '方法'; die; } } (new autofelix())->say();Kaedah cetak/__debugInfoKaedah ini akan dipanggil apabila objek kelas var_dump() Jika kaedah ini tidak ditakrifkan, var_dump() akan mencetak semua atribut kelas
<?php class autofelix { private static function say() { echo '我是飞兔小哥~'; } public function __callStatic($name, $arguments) { echo '你无权调用' . $name . '方法'; die; } } $a = new autofelix(); $a::say();Dapatkan atribut ahli/__getMelaluinya, atribut ahli persendirian boleh diperolehi di luar objek
<?php class autofelix { public function __debugInfo() { echo '飞兔小哥给你温馨提示'; } } var_dump(new autofelix());Mendapatkan atribut tidak boleh diakses/__issetApabila isset( ) atau empty() dipanggil pada atribut yang tidak boleh diakses, ia akan dipanggil secara automatik
<?php class autofelix { private $name = '飞兔小哥'; public function __get($name) { if(in_array($name, ['name', 'age'])) { echo $this->name; } else { echo '不是什么东西都能访问的~'; } } } (new autofelix())->name;Tugasan atribut/__setIa akan dicetuskan apabila memberikan nilai kepada harta yang tidak ditentukan
<?php class autofelix { private $name = '飞兔小哥'; public function __isset($name) { if(in_array($name, ['name', 'age'])) { echo $this->name; } else { echo '不是什么东西都能访问的~'; } } } isset(new autofelix()->name);Panggil objek itu sendiri/__invokeObjek itu sendiri tidak boleh digunakan secara langsung sebagai fungsiJika objek digunakan sebagai Membuat panggilan fungsi akan mencetuskan kaedah ini
<?php class autofelix { public function __set($name, $value) { echo '你想给' . $name . '赋值' . $value; } } (new autofelix())->name = '飞兔小哥';Panggilan siri/__tidurAkan dipanggil secara automatik apabila siri() dipanggil di luar kelas
<?php class autofelix { public function __invoke() { echo '你想调用我?'; } } (new autofelix())();Panggilan penyahserilan/__bangunAkan dipanggil secara automatik apabila kaedah unserialize() dilaksanakan
<?php class autofelix { public function __sleep() { echo '我是飞兔小哥~'; } } serialize(new autofelix());Panggilan aksara output/__toStringApabila kelas dianggap sebagai Apa yang harus dikembalikan semasa pemprosesan rentetan Jenis rentetan mesti dikembalikan di sini, jika tidak, ralat maut akan dilaporkan
<?php class autofelix { public function __wakeup() { echo '我是飞兔小哥~'; } } unserialize(new autofelix());Padam panggilan/__tidak ditetapkanApabila dipanggil pada sifat yang tidak boleh diakses Ia akan dipanggil secara automatik apabila tidak ditetapkan()
<?php class autofelix { public function __toString() { return '我是你得不到的对象...'; } } $a = new autofelix(); echo $a;(tutorial disyorkan:
Atas ialah kandungan terperinci Kaedah sihir yang biasa digunakan dalam PHP (perkongsian ringkasan). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!