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
DDDasal
2024-12-05 16:15:14266semak imbas

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);
}

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');

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!

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