2011-04-24 47 views
3
class A { 
    public static $foo = 42; 
} 

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

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

如何检查此静态属性是否存在于此类中?isset on static class attributes

+0

请停止在问题标题中写入标签。 – 2011-04-24 16:48:51

+0

@Tomala Geret'kal:好的,下次我会做正确的:) – levu 2011-04-24 16:55:01

回答

7

使用variable variables

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(); 
+0

谢谢,这工作:)我接受你回答尽快我可以(12分钟):) – levu 2011-04-24 16:41:00

+0

哇,变量变量可以混淆快。 – 2011-04-24 16:43:33

+0

我不明白,这些代码都不适用于我。 – JohnP 2011-04-24 16:43:44

1

在5.3中,你可以简单地做

var_dump(property_exists($class, $attribute)); 
+0

property_exists('class','attribute')来澄清这个答案 – Drew 2012-09-13 20:36:14