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

uqjltbpv  于 2023-03-28  发布在  PHP
关注(0)|答案(5)|浏览(258)
public function __construct() {
    parent::__construct();
    $this->load->config("master");
    $this->oops();
    $this->database();
    $this->load->config("lang");
    $this->load->model("functions");
}

代码有什么问题?我不知道什么问题!有人能帮我吗?
对不起,我的英语不好,我来自德国!

enyaitl3

enyaitl31#

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没有意义,因为没有父节点,因此是错误的。既然它没有意义,也没有任何用途,那么就删除它。

kuhbmx9i

kuhbmx9i2#

你需要扩展一个父类才能使用它的构造函数。

class migration extends PARENTCLASS {

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

ou6hu8tu3#

对于遇到此错误的任何人,即使您不打算从父代继承,或者如果您确实从父代正确继承,也完全有可能由于错误的剪切-粘贴片段而导致此错误。
例如,如果你剪切并粘贴了一些__construct()代码,并无意中将代码包含在其中,那么你会得到这个错误。注意类是否正在扩展,如果不是,然后删 debugging 误的代码。

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(),它也可能被错误地粘贴到了你没有看到的另一个类中(不是那么明显)。

b4qexyjb

b4qexyjb4#

下午好,我希望能对我的解决方案有所帮助。我遇到了同样的问题,我的解决方案是在显示父错误的文件中替换$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);
        }
    }
w8ntj3qf

w8ntj3qf5#

如果你在wordpress中遇到这个问题,最简单的解决方法是:
移除

parent::$_type

更改为

$this

在错误页/行中

相关问题