PHP 致命错误:无法继承抽象函数 [英] PHP Fatal error: Can't inherit abstract function

查看:26
本文介绍了PHP 致命错误:无法继承抽象函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我不明白我做错了什么...

I don't understand what I'm doing wrong...

abstract class Css {
    abstract protected function parse($data);
}

abstract class CssElem extends Css {
    abstract protected function parse($data);
}

class Modifier extends CssElem {
    function __construct($data = null) {
        if( $data )
            $this->parse ($data);
    }

    protected function parse($data) {
       // Some code...
    }
}

它给了我:

[Mon Jul 8 13:21:10 2013] PHP 致命错误:无法继承抽象函数 Css::parse()(之前在 CssElem 中声明为抽象)/home/arthur/NetBeansProjects/capa/CssElem.php 第 21 行 [Mon Jul 813:21:10 2013] 127.0.0.1:41207 [500]:/- 不能继承抽象函数 Css::parse()(之前在 CssElem 中声明为抽象)/home/arthur/NetBeansProjects/capa/CssElem.php 第 21 行

[Mon Jul 8 13:21:10 2013] PHP Fatal error: Can't inherit abstract function Css::parse() (previously declared abstract in CssElem) in /home/arthur/NetBeansProjects/capa/CssElem.php on line 21 [Mon Jul 8 13:21:10 2013] 127.0.0.1:41207 [500]: / - Can't inherit abstract function Css::parse() (previously declared abstract in CssElem) in /home/arthur/NetBeansProjects/capa/CssElem.php on line 21

第 21 行是 CssElem 中的抽象保护函数 parse($data);.

Line 21 is abstract protected function parse($data); in CssElem.

我更熟悉 Java 中的 OOP,但根据 文档...

I'm more familiar with OOP in Java, but it seems ok according to the doc...

推荐答案

尝试将您的中级课程更改为:

Try changing your intermediate class to:

abstract class CssElem extends Css {
    // abstract protected function parse($data); // <-- take this away
}

另请参阅文档中的此评论.

引用评论:

扩展抽象类的抽象类可以推卸责任它的子类在实现抽象方法时其父抽象类.

An abstract class that extends an abstract class can pass the buck to its child classes when it comes to implementing the abstract methods of its parent abstract class.

然而,这似乎将在下一个 PHP 7.2 版:

It seems however that this will be allowed in the next PHP version 7.2:

现在允许用子类中的另一个抽象方法覆盖一个抽象方法.(https://wiki.php.net/rfc/allow-abstract-function-覆盖)

It is now allowed to override an abstract method with another abstract method in a child class. (https://wiki.php.net/rfc/allow-abstract-function-override)

这篇关于PHP 致命错误:无法继承抽象函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆