Может кто-то объяснить это мне?
<?php
class SomeClass {
public static $SomeStatic = "SomeValue";
}
$class_name = "SomeClass";
var_dump("{$class_name}::\$SomeStatic"); // shows "SomeClass::$SomeStatic"
var_dump($class_name::$SomeStatic); // shows "SomeValue"
var_dump(defined("{$class_name}::\$SomeStatic")); // shows "bool(false)"
Почему определенный метод возвращает false? Думать, что 2nd var_dump возвращает значение.
Статическая переменная не является константой, поэтому defined
возвращается false
,
Чтобы проверить, имеет ли класс статическое свойство, вы можете использовать эту функцию:
function has_static_property($class, $property_name)
{
$reflection = new ReflectionClass($class);
$static_properties = $reflection->getStaticProperties();
return array_key_exists($property_name, $static_properties);
}
Больше информации о ReflectionClass
класс и getStaticProperties
Метод можно найти в документации PHP.
Других решений пока нет …