Artikel ini membawakan anda pengetahuan yang berkaitan tentang PHP menganggap semua kaedah bermula dengan "__" sebagai kaedah ajaib yang berikut terutamanya memperkenalkan beberapa kaedah ajaib yang biasa digunakan dalam PHP , kod contoh dalam artikel dijelaskan secara terperinci, anda boleh merujuknya jika perlu.
(Tutorial yang disyorkan: Tutorial video PHP)
Kaedah pembina/__bina
Apabila kelas dibuat seketika
akan dipanggil apabila kelas baharu dicipta secara automatik apabila dimusnahkan
<?php
class autofelix
{
public function __construct()
{
echo '我是飞兔小哥~';
}
}
new autofelix();
Salin selepas log masuk
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());
Salin selepas log masuk
Kaedah panggilan bukan statik/__panggilan
Apabila kaedah yang hendak dipanggil tidak wujud atau kebenarannya tidak mencukupi, ia akan dipanggil secara automatik
Sebagai contoh, saya memanggil pengubahsuaian peribadi di dalam kelas dari luar kelas
<?php
class autofelix
{
public function __clone()
{
echo '我是飞兔小哥,我想克隆你~';
}
}
$a = new autofelix();
clone $a;
Salin selepas log masuk
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();
Salin selepas log masuk
Kaedah cetak/__debugInfo
Kaedah 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();
Salin selepas log masuk
Dapatkan atribut ahli/__get
Melaluinya, atribut ahli persendirian boleh diperolehi di luar objek
<?php
class autofelix
{
public function __debugInfo()
{
echo '飞兔小哥给你温馨提示';
}
}
var_dump(new autofelix());
Salin selepas log masuk
Mendapatkan atribut tidak boleh diakses/__isset
Apabila 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;
Salin selepas log masuk
Tugasan atribut/__set
Ia 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);
Salin selepas log masuk
Panggil objek itu sendiri/__invoke
Objek itu sendiri tidak boleh digunakan secara langsung sebagai fungsi
Jika objek digunakan sebagai Membuat panggilan fungsi akan mencetuskan kaedah ini
<?php
class autofelix
{
public function __set($name, $value)
{
echo '你想给' . $name . '赋值' . $value;
}
}
(new autofelix())->name = '飞兔小哥';
Salin selepas log masuk
Panggilan siri/__tidur
Akan dipanggil secara automatik apabila siri() dipanggil di luar kelas
<?php
class autofelix
{
public function __invoke()
{
echo '你想调用我?';
}
}
(new autofelix())();
Salin selepas log masuk
Panggilan penyahserilan/__bangun
Akan dipanggil secara automatik apabila kaedah unserialize() dilaksanakan
<?php
class autofelix
{
public function __sleep()
{
echo '我是飞兔小哥~';
}
}
serialize(new autofelix());
Salin selepas log masuk
Panggilan aksara output/__toString
Apabila 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());
Salin selepas log masuk
Padam panggilan/__tidak ditetapkan
Apabila 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;
Salin selepas log masuk
(tutorial disyorkan:
Tutorial video PHP
)
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!