如何强制扩展类具有静态方法?

时间:2015-07-08 00:41:13

标签: php oop abstraction

我基本上希望B类实现在A类中定义的方法。但是当我这样做时,我得到以下错误。

  

严格标准:第4行的C:\ xampp \ htdocs \ test1.php中的静态函数A :: test()不应该是抽象的

这是我的PHP代码:

<?php
error_reporting( E_STRICT );

abstract class A{
    public abstract static function test();
}

class B extends A {
    public  static function test(){
        echo 'Testing';
    };
}

echo B::test();

1 个答案:

答案 0 :(得分:1)

静态方法不是对象的一部分,因此它们不应该被扩展。

使方法具体化。

一旦我开始构建单元测试,我实际上就遇到了同样的问题(我现在几乎虔诚地避免使用静态方法,但这是一个完整的对话)。对于回答问题的人,请查看此问题:Why does PHP 5.2+ disallow abstract static class methods?