Я пытаюсь создать приложение в CodeIgniter, где каждый контроллер расширяет базовый контроллер с именем «Incyte_Controller.php» и где каждая модель расширяет базовую модель с именем «Incyte_Model.php».
Раньше я импортировал эти родительские классы в каждый дочерний класс, используя ‘require’, но хочу изменить это, так как он слишком избыточен для меня.
Поэтому я переместил базовые файлы в «application / core» и изменил префикс базового класса в Config.php с «MY_» на «Incyte_».
Теперь все контроллеры могут расширять ‘Incyte_Controller’ без использования ‘required’.
Но, как ни странно, когда приложение пытается загрузить модель это говорит:
Неустранимая ошибка: невозможно создать экземпляр абстрактного класса Incyte_Model в
/opt/lampp/htdocs/incyte/system/core/Common.php в строке 172
Это происходит, хотя я пытаюсь расширить базовую модель точно так же, как я расширил базовый контроллер.
Я проверил на орфографические ошибки, в том числе заглавные буквы, но не нашел ни одного.
Кроме того, я должен отметить, что оба базовых класса являются абстрактными классами, потому что они не должны работать над собой (мои учителя, скорее всего, предпочли бы это)
Пожалуйста, поймите, я ЗНАЮ, что сами абстрактные классы не могут быть созданы, но классы, которые расширяют абстрактные классы, МОГУТ быть созданы, и это то, что я пытаюсь сделать. Но в одном случае, похоже, он не работает, а в другом очень похожий, но это странно.
Я надеюсь, что любой из вас может помочь
Лучший способ сделать это — расширить класс базовой модели на что-то вроде MY_Incyte_Model, а затем расширить его в ваших реальных моделях.
Так что вместо class AwesomeModel extends CI_Model
вы можете иметь class AwesomeModel extends MY_Incyte_Model
,
Узнайте больше здесь
https://ellislab.com/codeigniter/user-guide/general/core_classes.html
Идти к /opt/lampp/htdocs/incyte/system/core/Common.php
и вы найдете строку, которая пытается сделать что-то вроде этого:
new Incyte_Model();
Incyte_Model
класс является абстрактным (это означает, что он не может быть использован напрямую — его нужно разделить на подклассы).
Посмотрите, как PHP обрабатывает Объектно-ориентированный (ОО) код.
В частности, посмотрите на абстракции классов.