Неопределенная ошибка загрузки $ load после обновления CodeIgniter с 1.7 до 2.1

Почему я получаю эту ошибку после обновления CodeIgniter с версии от версии 1.1 до версии 2.1?

A PHP Error was encountered Severity: Notice Message: Undefined property: Site::$load Filename: libraries/Website.php Line Number: 25 Fatal error: Call to a member function library() on a non-object in C:\xampp\htdocs\travel\application\libraries\Website.php on line 25 

Библиотечное приложение / библиотека / веб-сайт

 class Website extends CI_Controller { public static $current_city; public function __construct() { $this->load->library('language'); // line 25 $this->language->loadLanguage(); $this->load_main_lang_file(); $this->load_visitor_geographical_data(); $this->load->library('bread_crumb'); } } 

Вы забыли называть метод __construct класса CI_Controller :

 public function __construct() { // Call CI_Controller construct method first. parent::__construct(); $this->load->library('language'); // line 25 $this->language->loadLanguage(); $this->load_main_lang_file(); $this->load_visitor_geographical_data(); $this->load->library('bread_crumb'); } 

Примечание. Если вы создаете контроллер, его следует поместить в application/controllers/ , а не в application/libraries/ .

Если класс child (inheritor) имеет конструктор, родительский конструктор не будет вызываться, потому что вы переопределите конструктор родителя с дочерним, если вы явно не вызываете конструктор parent::__construct(); используя parent::__construct(); , Это концепция полиморфизма в объектно-ориентированном программировании

Если вы не вызываете parent::__construct(); когда контроллер приложения инициализируется, вы потеряете класс Loader и Core а $this->load никогда не будет работать.

Использование parent::__construct(); необходимо, только если вы хотите объявить __construct() в своем контроллере, который будет переопределять родительский.

Это верно и для моделей, но с использованием parent::__construct(); в вашей модели только регистрирует отладочное сообщение Model Class Initialized , поэтому, если вам нужно знать, когда модель инициализирована (в журналах) , продолжайте использовать это, если нет, игнорируйте ее.