Почему я не могу использовать методы __construct в контроллерах в OpenCart с vqmod

Почему я не могу использовать методы __construct в контроллерах в OpenCart с vqmod

09.01.2014 04:41:21 Просмотров 27 Источник

Я попытался добавить только пустой __constructк контроллеру модуля.

Фатальная ошибка: вызов функции-члена get () на не-объекте в /var/www/rodebutik.dk/public_html/wb/vqmod/vqcache/vq2-system_engine_controller.php на линии 16

Строка 16:

public function __get($key) {
    return $this->registry->get($key);
}
У вопроса есть решение - Посмотреть?

https://stackoverflow.com/questions/21020575/why-cant-i-use-construct-methods-in-controllers-in-opencart-with-vqmod#comment31596637_21020575
Я бы предположил, что экземпляр реестра передается через объект, который вы расширяете. Когда вы переопределяете и пустое построение, оно больше не задано-отсюда и ошибка.

Ответы - Почему я не могу использовать методы __construct в контроллерах в OpenCart с vqmod / Why can't i use __construct methods in controllers in OpenCart with vqmod

Является ответом!
deceze

09.01.2014 07:52:39

Наиболее вероятное объяснение: исходный конструктор настраивал объект $this->registry. Вы переопределяете конструктор, который теперь больше не устанавливает этот объект. Следовательно: вы ошибаетесь, когда код пытается использовать ожидаемый объект, которого там нет.

Если вы переопределяете конструктор, вы должны/должны также вызвать исходный конструктор:

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

    // new code
}
Zaheer Babar

22.01.2015 03:11:52

Вы можете создать конструктор в контроллере или модели таким образом.

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

15.07.2019 08:13:51

Вы можете использовать конструктор, как это, то же самое для модели также можно использовать, передавая параметр.

class ControllerCommonDashboard extends Controller {

    public function __construct($params) {
        parent::__construct($params);
    }
}
Закрыть X