Я видел несколько разных постов, но никто из них, похоже, не работает для меня.
У меня есть один класс, который расширяет CI_Model:
class Users_Model extends CI_Model { public function __construct(){ parent::__construct(); }
а потом:
class Students_Model extends Users_Model { private $_students; public function __construct(){ parent::__construct(); $this->_students = $this->get_students(); }
Однако я получаю следующее сообщение об ошибке:
PHP Fatal error: Class 'Users_Model' not found in /Users/rosswilson/Localhost/thedrumrooms/dreamweaver/ci/application/models/students_model.php
Я использовал require_once
для включения файла в расширенный класс, и он работает. Это лучшая практика / правильный способ сделать это?
Благодарю.
Стандартная практика в CI заключается в создании базовой модели внутри application/core
именем MY_Model.php
, MY_
зависит от того, что определено в вашей конфигурации.
Затем внутри вашего MY_Model.php
вас может быть много классов, определенных в этом файле, которые вы можете расширить в своей модели, в основном, модель загрузки CodeIgniter ищет определенные классы по этому пути и файлу.
Но если вы хотите использовать require_once
вы должны использовать APPPATH
(путь приложения), как определено в index.php
. Но вашей пользовательской модели все равно придется расширять CI_Model
поскольку он использует основной класс для модели CI, или ваша модель не будет работать.
ex require_once APPPATH.'/models/test.php';
ДОБАВЛЕННЫЕ ПРИМЕЧАНИЯ:
спасибо @dean Или за указание на это. Внутри файла MY_Model.php
должен быть MY_Model class
который расширяет CI_Model
.
вы убедились, что Users_model загружен до загрузки Students_model? вы можете сделать это в файле конфигурации autoload.php.
Поместите файл users_model.php в основной каталог. Затем попробуйте наследовать Users_Model в Students_Model.