我想弄清楚反射类是如何工作的。
当我反映一个类时,我希望它拥有来自它父母的所有方法/属性。
例如
class A
{
public function foo();
}
class B extends A
{
public function bar();
}
我希望方法'foo'现在也是B的一部分。但是当反映和使用方法'hasMethod'时,我没有方法'foo'。
什么是正确的方法来查看继承树中的某个方法是否存在?
我的问题在于检查构造函数。有些孩子没有实现构造方法,我期望构造方法能够通过继承来反映。
提前致谢!
答案 0 :(得分: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" }
答案 1 :(得分:0)
当然你不必使用反射?您可以使用method_exists
:
$object = new B();
if (method_exists($object, 'foo')) {
//Do something
}