Php 为什么可以';我在OpenCart和vqmod中的控制器中使用_构造方法

Php 为什么可以';我在OpenCart和vqmod中的控制器中使用_构造方法,php,opencart,Php,Opencart,我试着只向模块控制器添加一个空的\u构造方法 致命错误:在第16行的/var/www/rodebutik.dk/public\u html/wb/vqmod/vqcache/vq2-system\u engine\u controller.php中对非对象调用成员函数get() 第16行: public function __get($key) { return $this->registry->get($key); } 最可能的解释是:原始构造函数正在设置$this->r

我试着只向模块控制器添加一个空的
\u构造
方法

致命错误:在第16行的/var/www/rodebutik.dk/public\u html/wb/vqmod/vqcache/vq2-system\u engine\u controller.php中对非对象调用成员函数get()

第16行:

public function __get($key) {
    return $this->registry->get($key);
}

最可能的解释是:原始构造函数正在设置
$this->registry
对象。您正在重写构造函数,该构造函数现在不再设置该对象。因此:当代码试图使用不存在的预期对象时,会出错

如果重写构造函数,还应/需要调用原始构造函数:

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

    // new code
}

最可能的解释是:原始构造函数正在设置
$this->registry
对象。您正在重写构造函数,该构造函数现在不再设置该对象。因此:当代码试图使用不存在的预期对象时,会出错

如果重写构造函数,还应/需要调用原始构造函数:

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

    // new code
}

您可以这样在控制器或模型中创建构造函数

class ModelMyModel extends Model {
   public function __construct($params) {
      parent::__construct($params);
   }
}

您可以这样在控制器或模型中创建构造函数

class ModelMyModel extends Model {
   public function __construct($params) {
      parent::__construct($params);
   }
}

通过传递参数,您可以像这样使用构造函数,也可以使用同样的构造函数

class ControllerCommonDashboard extends Controller {

    public function __construct($params) {
        parent::__construct($params);
    }
}

通过传递参数,您可以像这样使用构造函数,也可以使用同样的构造函数

class ControllerCommonDashboard extends Controller {

    public function __construct($params) {
        parent::__construct($params);
    }
}

我看不出有任何理由不应该使用
\uu construct()
方法。。。请提供代码,一个空的
\uu构造()
不能产生这样的错误。我猜注册表实例是通过您正在扩展的对象传递的。当您重新定义并清空构造函数时,它不再被设置-因此出现错误。我看不出有任何理由不应该使用
\u construct()
方法。。。请提供代码,一个空的
\uu构造()
不能产生这样的错误。我猜注册表实例是通过您正在扩展的对象传递的。当您重新定义并清空构造时,它不再被设置-因此会出现错误。