Rumah >pembangunan bahagian belakang >tutorial php >Bilakah Kaedah Sihir __get dan __set PHP Sebenarnya Dipanggil?
PHP __get dan __set Kaedah Sihir: Memahami Doa dan Had
Kaedah sihir __get dan __set dalam PHP direka untuk mengendalikan akses harta objek dan pengubahsuaian apabila hartanah tidak boleh diakses secara umum. Walau bagaimanapun, beberapa salah tanggapan mungkin timbul mengenai tingkah laku mereka.
Sifat Tidak Boleh Dicapai
__get dan __set digunakan apabila sifat atau kaedah tidak boleh diakses. Dalam contoh yang disediakan, $bar ialah harta awam, yang boleh diakses secara lalai. Oleh itu, kaedah sihir tidak dicetuskan.
Pengganti Getter dan Setter
Kaedah sihir tidak bertujuan untuk menggantikan getter dan setter. Mereka menyediakan mekanisme sandaran untuk mengendalikan hartanah yang tidak boleh diakses. Mereka direka terutamanya untuk pengendalian ralat dan tidak seharusnya bergantung semata-mata untuk akses dan pengubahsuaian harta benda.
Pertimbangan Prestasi
Menggunakan kaedah ajaib boleh mengakibatkan kelajuan pelaksanaan yang lebih perlahan berbanding menggunakan getter, setter atau akses harta langsung yang jelas. Ini kerana kaedah sihir melibatkan panggilan kaedah tambahan dan introspeksi berorientasikan objek.
Pengubahsuaian Contoh
Untuk menggambarkan penggunaan kaedah sihir yang betul, mari kita ubah suai contoh untuk digunakan harta persendirian:
class foo { private $bar; public function __get($name) { echo "Get:$name"; return $this->$name; } public function __set($name, $value) { echo "Set:$name to $value"; $this->$name = $value; } } $foo = new foo(); echo $foo->bar; // Invokes __get() $foo->bar = 'test'; // Invokes __set() echo "[$foo->bar]"; // Outputs [test]
Dalam contoh ini, sifat $bar kini persendirian, menjadikannya tidak boleh diakses secara lalai. Akibatnya, kaedah __get dan __set digunakan dengan betul apabila mengakses dan mengubah suai harta tersebut.
Atas ialah kandungan terperinci Bilakah Kaedah Sihir __get dan __set PHP Sebenarnya Dipanggil?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!