繁体   English   中英

子类中的PHP get_class()功能

[英]PHP get_class() functionality in child classes

我需要检查属性是否存在,并且可以正常工作:

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

如何获得所需的功能? 我尝试用$thisselfstatic代替get_class() ,但没有任何效果。

我相信我找到了正确的答案。 对于静态方法,请使用get_called_class()

也许$this适用于对象方法。

如何针对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 ;-))

以下作品:

<?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要测试的类名或类的对象

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM