Определенный PHP метод возвращает ложное значение, но статическая переменная существует

Может кто-то объяснить это мне?

<?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 возвращает значение.

0

Решение

Статическая переменная не является константой, поэтому 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.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]