Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapa kaedah sihir __get dan __set saya tidak digunakan dalam PHP?

Mengapa kaedah sihir __get dan __set saya tidak digunakan dalam PHP?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-15 04:47:02955semak imbas

Why aren't my __get and __set magic methods being invoked in PHP?

Melebihi Pemuat dan Penetap: Memahami __get dan __set Kaedah Sihir

Kaedah sihir __get dan __set dalam PHP bertujuan untuk menyediakan alternatif kepada getter dan setter tradisional. Dengan mengatasi kaedah ini, pembangun boleh menyesuaikan gelagat akses dan pengubahsuaian hartanah. Walau bagaimanapun, seperti yang dilihat dalam contoh kod yang disediakan, kaedah ini tidak digunakan seperti yang diharapkan.

Isu: Kaedah Sihir lwn. Harta Awam

Apabila sifat diisytiharkan awam, mereka dianggap boleh diakses, dan PHP tidak menggunakan kaedah __get dan __set. Dalam contoh khusus ini, sifat $bar diisytiharkan awam, menjadikan kaedah sihir berlebihan.

Melebihi Harta dengan Kaedah Sihir

Seperti yang dinyatakan dalam manual PHP, __get digunakan untuk mengendalikan membaca data daripada sifat tidak boleh diakses, manakala __set digunakan untuk menulis data kepada sifat tidak boleh diakses. Jika harta $bar telah ditakrifkan sebagai peribadi atau dilindungi, kaedah __get dan __set akan campur tangan.

Implikasi Prestasi

Adalah penting untuk ambil perhatian bahawa kaedah sihir adalah jauh lebih perlahan daripada getter biasa, setter dan panggilan kaedah langsung. Oleh itu, ia harus digunakan dengan bijak untuk kes penggunaan tertentu, seperti pengendalian ralat atau menyediakan akses sifat dinamik.

Kesimpulan

Kaedah sihir __get dan __set dalam PHP serve tujuan tertentu dan harus digunakan hanya apabila perlu, memahami pertukaran prestasi yang terlibat. Dalam kes di mana hartanah boleh diakses, seperti dalam contoh yang disediakan, adalah lebih cekap untuk menggunakan akses hartanah standard dan teknik pengubahsuaian.

Atas ialah kandungan terperinci Mengapa kaedah sihir __get dan __set saya tidak digunakan dalam PHP?. 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