有人可以向我解释一下吗?
<?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?认为第二个var_dump返回一个值。
答案 0 :(得分:3)
静态变量不是常数,因此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文档。