isset для статических атрибутов класса - PullRequest
3 голосов
/ 24 апреля 2011
class A {
    public static $foo = 42;
}

$class = 'A';
$attribute = 'foo';

var_dump(isset($class::$attribute)); //gives bool(false)

Как я могу проверить, существует ли этот статический атрибут в этом классе?

Ответы [ 2 ]

7 голосов
/ 24 апреля 2011

Использовать переменные переменные :

var_dump(isset($class::$$attribute)); // the two dollars are intentional

Если у вас нет PHP 5.3, но единственным точным способом, вероятно, является использование Reflection API :

$reflectionClass = new ReflectionClass($class);
$exists = $reflectionClass->hasProperty($attribute) && $reflectionClass->getProperty($attribute)->isStatic();
1 голос
/ 25 апреля 2011

В 5.3 вы можете просто сделать

var_dump(property_exists($class, $attribute));
...