2011-04-24 48 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