我希望从类中获取所有非静态类变量。我遇到的问题是“非静态”部分。以下内容:
foreach(array_keys(get_class_vars(get_called_class())) AS $key) {
echo $key;
}
如何找出$ key是静态属性还是非静态属性。我知道我可以尝试类似的东西:
@$this->$key
但必须有更好的方法来检查这一点。
任何人
答案 0 :(得分:4)
此代码是我的解决方案。
$ReflectionClass = new \ReflectionClass(get_called_class());
$staticAttributes = $ReflectionClass->getStaticProperties();
$allAttributes = $ReflectionClass->getProperties();
$attributes = array_diff($staticAttributes, $allAttributes);
答案 1 :(得分:1)
class testClass
{
private static $staticValPrivate;
protected static $staticValProtected;
public static $staticValPublic;
private $valPrivate;
protected $valProtected;
public $valPublic;
public function getClassProperties()
{
return get_class_vars(__CLASS__);
}
public function getAllProperties()
{
return get_object_vars($this);
}
}
$x = new testClass();
var_dump($x->getClassProperties());
echo '<br />';
var_dump($x->getAllProperties());
echo '<br />';
var_dump(array_diff_key($x->getClassProperties(),$x->getAllProperties()));