聘我网

新概念招聘3.0

class如何晚绑定?

vote up0vote downstar
abstract class base {
    abstract public function test();
    public function run()
    {
        self::test();
    }
}

class son extends base {
    public function test()
    {
        echo 1;
    }
}
son::run();

报错:

Fatal error: Cannot call abstract method base::test()

 

1 个答复

vote up0vote downcheck

self始终表示代码所在的那个class,用static就能指向子类了:

abstract class base {
    abstract public static function test();
    static public function run()
    {
        static::test();
    }
}

class son extends base {
    static public function test()
    {
        echo 1;
    }
}
son::run();
链接

您的回答





不是您要找的问题? 浏览其他含有标签 的问题或者 自己问个.