【发布时间】:2011-10-04 10:36:24
【问题描述】:
如何从父静态函数调用子函数?
在 php5.3 中有一个名为get_called_class() 的内置方法可以从父类调用子方法。但是我的服务器运行的是 php 5.1。
有什么办法可以做到吗?
我想从静态函数中调用它。这样我就不能使用“$this”
所以我应该使用“self”关键字。
下面的例子我的父类是“Test123”,从父类静态函数“myfunc”试图调用像这样的子类函数“self::test();”
abstract class Test123
{
function __construct()
{
// some code here
}
public static function myfunc()
{
self::test();
}
abstract function test();
}
class Test123456 extends Test123
{
function __construct()
{
parent::__construct();
}
function test()
{
echo "So you managed to call me !!";
}
}
$fish = new Test123456();
$fish->test();
$fish->myfunc();
【问题讨论】:
-
你应该向我们展示你的代码的 sn-p
-
只需使用
$this->parentFunc()。不,没有引入 get_call_class() 来调用父函数。 -- php.net/manual/en/language.oop5.inheritance.php -
我的父函数是
static -
@Sahal:PHP 5.1 中没有后期静态绑定,需要显式命名类才能调用函数:
Test123456::test(),self将是Test123。 - 请参阅我更新的答案以获得解释。
标签: php oop static late-static-binding