PHP 已定义方法 returns 错误值但存在静态变量

PHP defined method returns false value but static variable exists

谁能给我解释一下?

<?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)"

为什么定义的方法returns为假?认为第2个var_dumpreturns一个值。

静态变量不是常量,所以 defined returns false.

要检查 class 是否具有静态 属性,您可以使用此函数:

function has_static_property($class, $property_name)
{
    $reflection        = new ReflectionClass($class);
    $static_properties = $reflection->getStaticProperties();

    return array_key_exists($property_name, $static_properties);
}

有关 ReflectionClass class and the getStaticProperties 方法的更多信息可以在 PHP 文档中找到。