我想知道是否有办法实现这个目标:
<?php
class Foo
{
public function getMethods()
{
$methods = get_class_methods($this);
print_r($methods);
}
}
class Bar extends Foo
{
private function privateFunction() {} // Not visible for parent::getMethods()
}
$Bar = new Bar();
$Bar->getMethods();
?>
有一个父类Foo,其中我有一个方法调用get_class_methods($ this)-Function。我总是通过几个不同的Bar-Class来扩展Foo-Class。我的问题是,我无法看到私有方法privateFunction()。
我的目标是,看看Bar的所有方法,但我不想重新创建getMethods() - 每个子类中的方法。
那么有没有办法让它们在父类中,或者我是否必须覆盖每个子类中的getMethods() - Method?
答案 0 :(得分:3)
您可能需要使用Reflection来实现此目标
class Foo {
public function getMethods() {
$class = new ReflectionClass($this);
$methods = $class->getMethods(
ReflectionMethod::IS_PUBLIC |
ReflectionMethod::IS_PROTECTED |
ReflectionMethod::IS_PRIVATE
);
print_r($methods);
}
}
class Bar extends Foo {
public function privateFunction() {}
}
$Bar = new Bar();
$Bar->getMethods();