Rumah > pembangunan bahagian belakang > tutorial php > Mengapakah kaedah sihir __get dan __set PHP tidak digunakan semasa mengakses harta awam?

Mengapakah kaedah sihir __get dan __set PHP tidak digunakan semasa mengakses harta awam?

Barbara Streisand
Lepaskan: 2024-11-25 19:59:15
asal
905 orang telah melayarinya

Why are PHP's __get and __set magic methods not invoked when accessing a public property?

Kaedah Ajaib __get dan __set dalam PHP

PHP menyediakan kaedah ajaib yang membolehkan pembangun membebankan operasi tertentu, seperti akses harta dan panggilan kaedah. Antara kaedah ini ialah __get dan __set, yang direka bentuk untuk mengatasi gelagat lalai akses harta benda.

Kod yang disediakan mentakrifkan kelas foo dengan sifat awam dan kaedah ajaib __get dan __set. Walau bagaimanapun, apabila cuba menggunakan kaedah ini untuk mengakses $foo->bar, hanya harta awam sedang diakses.

Ini kerana __get dan __set digunakan hanya apabila harta atau kaedah tidak boleh diakses. Memandangkan $foo->bar ialah harta awam, kaedah ajaib tidak dicetuskan.

Seperti dalam manual PHP, __get dilaksanakan apabila membaca data daripada sifat tidak boleh diakses dan __set digunakan apabila menulis data kepada tidak boleh diakses harta benda. Dalam kes ini, ahli kelas adalah awam dan oleh itu boleh diakses, menjadikan kaedah sihir tidak relevan.

Daripada menggunakan kaedah sihir, pertimbangkan untuk melaksanakan getter dan setter yang betul atau mengakses terus sifat untuk tingkah laku yang lebih cekap dan boleh diramal. Kaedah ajaib harus dikhaskan untuk kes luar biasa di mana sifat atau kaedah tidak boleh diakses dengan cara biasa.

Atas ialah kandungan terperinci Mengapakah kaedah sihir __get dan __set PHP tidak digunakan semasa mengakses harta awam?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan