Rumah > pembangunan bahagian belakang > tutorial php > Bagaimanakah Saya Boleh Mengakses Hartanah Dilindungi dalam Versi PHP Lama (cth., 5.2.17)?

Bagaimanakah Saya Boleh Mengakses Hartanah Dilindungi dalam Versi PHP Lama (cth., 5.2.17)?

Linda Hamilton
Lepaskan: 2024-12-09 03:57:15
asal
512 orang telah melayarinya

How Can I Access Protected Properties in Older PHP Versions (e.g., 5.2.17)?

Mengakses Sifat Dilindungi dalam Objek dengan Versi PHP Lama

Dalam PHP, mengakses sifat dilindungi objek menggunakan -> operator secara langsung tidak dibenarkan. Ini boleh menjadi satu cabaran apabila anda perlu bekerja dengan sifat ini.

Jika anda berurusan dengan versi PHP yang lebih lama, seperti 5.2.17, menggunakan kaedah ReflectionClass untuk mengakses sifat yang dilindungi bukanlah pilihan.

Penyelesaian:

Nasib baik, terdapat penyelesaian yang agak mudah untuk ini isu:

function accessProtected($obj, $prop) {
  $reflection = new ReflectionClass($obj);
  $property = $reflection->getProperty($prop);
  $property->setAccessible(true);
  return $property->getValue($obj);
}
Salin selepas log masuk

Fungsi ini mengambil dua parameter: objek yang mengandungi harta yang dilindungi dan nama harta yang anda ingin akses. Ia menggunakan kelas ReflectionClass untuk mencipta pantulan objek dan kemudian menggunakan kaedah getProperty() untuk mendapatkan harta tertentu. Akhir sekali, ia menetapkan kebolehcapaian harta kepada benar menggunakan kaedah setAccessible() dan kemudian mendapatkan semula nilai menggunakan kaedah getValue().

Contoh Penggunaan:

$obj = new Fields_Form_Element_Location();
$currentValue = accessProtected($obj, '_value');
Salin selepas log masuk

Kaveat:

Perhatikan bahawa penyelesaian ini bukan serasi secara universal. Sesetengah rangka kerja PHP atau pelaksanaan objek tertentu mungkin mempunyai sekatan tambahan yang menghalang akses luaran kepada sifat yang dilindungi. Anda dinasihatkan untuk menyemak dokumentasi rangka kerja atau pustaka objek anda untuk mengesahkan keserasian sebelum menggunakan teknik ini.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengakses Hartanah Dilindungi dalam Versi PHP Lama (cth., 5.2.17)?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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