Rumah > pembangunan bahagian belakang > tutorial php > Bagaimanakah Saya Boleh Mengakses Hartanah Objek Dilindungi dalam Versi PHP Lama (Pra-5.5)?

Bagaimanakah Saya Boleh Mengakses Hartanah Objek Dilindungi dalam Versi PHP Lama (Pra-5.5)?

DDD
Lepaskan: 2024-12-05 16:15:14
asal
281 orang telah melayarinya

How Can I Access Protected Object Properties in Older PHP Versions (Pre-5.5)?

Akses Sifat Objek Dilindungi dalam PHP

pengaturcaraan berorientasikan objek PHP menyediakan tiga pengubah suai akses: awam, dilindungi dan peribadi. Walau bagaimanapun, ketidakupayaan untuk mengakses hartanah yang dilindungi secara langsung boleh mengecewakan apabila bekerja dengan objek tertentu. Artikel ini meneroka penyelesaian untuk mendapatkan semula sifat yang dilindungi dalam versi PHP sebelum 5.5.

ReflectionClass to the Rescue

Sebelum PHP 5.5, kelas ReflectionClass menawarkan kaedah untuk mengakses harta yang dilindungi. Fungsi berikut menunjukkan cara:

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

Dengan menggunakan fungsi ini, anda boleh mengakses sifat yang dilindungi dengan menghantar objek dan nama sifat sebagai argumen. Sebagai contoh, memandangkan objek dalam contoh anda:

$value = accessProtected($obj, '_value');
Salin selepas log masuk

Kaedah ini akan mengambil semula sifat _value yang dilindungi dan menyimpannya dalam pembolehubah $value.

Nota untuk PHP 5.2 .17

Walaupun penyelesaian ReflectionClass berkesan dalam persekitaran setempat anda, ia mungkin tidak tersedia pada pelayan yang menjalankan PHP versi 5.2.17. Malangnya, tiada kaedah alternatif untuk mengakses sifat yang dilindungi dalam versi PHP sedemikian.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengakses Hartanah Objek Dilindungi dalam Versi PHP Lama (Pra-5.5)?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan