致命错误:当前类范围没有父级时,无法访问parent ::

时间:2014-10-28 02:40:19

标签: php

public function __construct() {
    parent::__construct();
    $this->load->config("master");
    $this->oops();
    $this->database();
    $this->load->config("lang");
    $this->load->model("functions");
}

代码有什么问题?我不知道什么是错的! 任何人都可以帮我吗?

对不起我的英语,我来自德国!

4 个答案:

答案 0 :(得分:9)

parent::用于访问方法的父类实现。你的班级没有父母,因为它没有extend任何班级。因此错误。

class Foo {

    public function bar() {
        echo 'bar';
    }

}

class Baz extends Foo {

    public function bar() {
        parent::bar();
        echo 'baz';
    }

}

这里parent有意义,因为有一个父类。

class Foo {

    public function bar() {
        parent::bar();
    }

}

这里parent没有意义,因为没有父,因此错误。因为它没有意义并且没有任何意义,所以只需删除它即可。

答案 1 :(得分:3)

您需要扩展父类才能使用它的'构造

class migration extends PARENTCLASS {

    function __construct() {
        parent::__construct();
        .......
    }

答案 2 :(得分:2)

对于遇到此错误的任何人,即使您不打算从父级继承,或者您确实从父级继承,也完全有可能因错误的切割而导致此错误 - 片段。

例如。如果您剪切并粘贴了一些__construct()代码并且无意中将代码包含在其中,那么您将收到此错误。注意是否正在扩展类,然后删除错误的代码。

class Subscription /* this class not intended to be extended */
{
    public function __construct()
    {
        parent::__construct();/* <--- erroneous paste code  */
        $this->states         = new ArrayCollection();
        $this->clusters       = new ArrayCollection();
    }

即使您可能正确使用了parent :: __ construct(),它也可能被错误地粘贴到您未查看的另一个类中(不那么明显)。

答案 3 :(得分:0)

下午好,希望对我的解决方案有所帮助。我遇到了同样的问题,我的解决方案是用$ this-> jsonSerialize()

替换显示父错误的文件。
public function jsonSerialize(){
        if (get_parent_class() == ""){
            return $values;
        }
        else{
            return array_merge(parent::jsonSerialize(), $values);
        }
    }

这就是变化

public function jsonSerialize(){
        if (get_parent_class() == ""){
            return $values;
        }
        else{
            return array_merge($this->jsonSerialize(), $values);
        }
    }