如何确定子类中的方法调用方式
问题描述:
请帮帮我。 例如,我有一个Foo类,它扩展自Bar类。如何确定子类中的方法调用方式
class Bar
{
public function __call($func, $args){
echo "Calling method {$func}";
}
public function __callstatic($func, $args){
echo "Calling static method {$func}";
}
public function run(){
echo "calling Bar::run method \n";
}
}
class Foo extends Bar
{
public $objBar;
public function __construct(){
$this -> objBar = new Bar();
}
public function callViaObject(){
$this -> objBar -> run();
$this -> objBar -> run1();
}
public function callViaParent(){
parent::run();
parent::run1();
}
}
$foo = new foo();
$foo -> callViaObject();
/* output
calling Bar::run method \n
Calling method run1; */
$foo -> callViaParent();
/* output
calling Bar::run method \n
Calling method run1; !! */
这里有一个问题,当我从子类中调用方法与parent::
,和父类有一个对象,调用方法parent::
不是静态调用。
那么我该如何检查Bar
类,该如何调用该方法? 我可以检查呼叫类型是否为父::?
非常感谢你!
答
添加private static function run1() {}
在你的A级
+0
谢谢你!但@ diplex19已经帮了我。 [链接] https://bugs.php.net/bug.php?id=53826 – 2013-03-01 18:56:34
你有没有试图改变'__callstatic'成'__callStatic'(注意大写S)?这可能是原因。 – aaaaaa123456789 2013-03-01 11:03:20
我尝试过,但它是一样的。 – 2013-03-01 11:18:50
https://bugs.php.net/bug.php?id=53826 – realization 2013-03-01 11:35:52