我需要检查一个属性是否存在,这是有效的:
class someClass {
protected $some_var
public static function checkProperty($property) {
if(!property_exists(get_class()) ) {
return true;
} else return false;
}
}
但是现在当我尝试扩展课程时,它不再起作用了。
class someChild extends someClass {
protected $child_property;
}
someChild::checkProperty('child_property'); // false
如何获得我想要的功能?我尝试将get_class()
替换为$this
,self
,static
,但无效。
答案 0 :(得分:0)
我相信我找到了正确的答案。对于静态方法,请使用get_called_class()
。
也许$this
适用于对象方法。
答案 1 :(得分:0)
如何针对get_class()和get_parent_class()检查property_exists?但是,对于更多嵌套类,您必须以递归方式检查类。
public static function checkProperty($property)
{
if (property_exists(get_class(), $property)
or property_exists(get_parent_class(), $property))
{
return true;
}
else return false;
}
(对不起,但我更喜欢Allman-Style; - ))
答案 2 :(得分:-1)
以下作品:
<?php
class Car
{
protected $_var;
public function checkProperty($propertyName)
{
if (!property_exists($this, $propertyName)) {
return false;
}
return true;
}
}
class BMW extends Car
{
protected $_prop;
}
$bmw = new BMW();
var_dump($bmw->checkProperty('_prop'));
@param $ class要测试的类的名称或类的对象