Rumah >pembangunan bahagian belakang >tutorial php >Bilakah Kaedah Sihir __get dan __set PHP Sebenarnya Dipanggil?

Bilakah Kaedah Sihir __get dan __set PHP Sebenarnya Dipanggil?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-16 15:34:02262semak imbas

When Do PHP's __get and __set Magic Methods Actually Get Called?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn