Rumah > Soal Jawab > teks badan
Saya cuba mengakses pemalar kelas dalam salah satu kelas saya:
const MY_CONST = "value";
Jika saya mempunyai pembolehubah untuk memegang nama pemalar ini seperti ini:
$myVar = "MY_CONST";
Bolehkah saya mengakses nilai MY_CONST entah bagaimana?
self::$myVar
Ini jelas tidak berfungsi kerana ia adalah untuk sifat statik. Juga, pembolehubah pembolehubah tidak berfungsi sama ada.
P粉4045397322023-10-21 13:52:00
Tiada sintaks yang sepadan, tetapi anda boleh menggunakan carian eksplisit:
print constant("classname::$myConst");
Saya percaya ia berkesan untuk self::
juga.
P粉1037395662023-10-21 13:02:38
Terdapat dua cara untuk melakukan ini: menggunakan fungsi malar atau menggunakan pantulan.
Fungsi pemalar digunakan untuk pemalar yang diisytiharkan melalui define
serta pemalar kelas:
class A { const MY_CONST = 'myval'; static function test() { $c = 'MY_CONST'; return constant('self::'. $c); } } echo A::test(); // output: myval
Kaedah kedua, lebih susah payah adalah melalui refleksi:
$ref = new ReflectionClass('A'); $constName = 'MY_CONST'; echo $ref->getConstant($constName); // output: myval