PHP定义的方法返回false值但存在静态变量

时间:2015-05-15 16:22:24

标签: php static constants defined

有人可以向我解释一下吗?

<?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返回一个值。

1 个答案:

答案 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文档。