PHP反射行为



我想弄清楚反射类是如何工作的。

当我反射一个类时,我希望它具有它的父类的所有方法/属性。

例如

class A
{
  public function foo();
}
class B extends A
{
  public function bar();
}

我希望方法'foo'现在也成为b的一部分,但是当反映和使用方法'hasMethod'时,我没有方法'foo'。

在继承树中查看方法是否存在的正确方法是什么?

我的问题在于检查构造函数。有些子节点没有实现构造方法,我希望构造方法通过继承来反映。

提前感谢!

使用getConstructor():

class A
{
   public function __construct(){}
   public function foo(){}
}
class B extends A
{
   public function bar(){}
}
$class = new ReflectionClass('B');
$constructor = $class->getConstructor();
var_dump($constructor);
//object(ReflectionMethod)#2 (2) { ["name"]=> string(11) "__construct" ["class"]=> string(1) "A" }

你肯定不需要使用反射吧?你可以直接用method_exists:

$object = new B();
if (method_exists($object, 'foo')) {
    //Do something
}

相关内容

  • 没有找到相关文章

最新更新