0

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

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

例如

class A
{
  public function foo();
}

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

我希望方法“foo”现在也是 B 的一部分。但是当反映和使用方法“hasMethod”时,我没有方法“foo”。

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

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

提前致谢!

4

2 回答 2

0

它适用于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" }
于 2013-06-13T18:00:01.250 回答
0

当然你不必使用反射?你可以使用method_exists

$object = new B();
if (method_exists($object, 'foo')) {
    //Do something
}
于 2013-06-13T18:00:10.700 回答