Расширение класса контроллера в CodeIgniter

У меня есть class MY_Controller extends CI_Controller и общую логику для большого раздела профиля, поэтому я пытался создать class Profile extends MY_Controller с общей логикой для раздела профиля, и весь класс, связанный с этим разделом, должен расширять этот класс профиля, насколько я понимаю, но когда Я попытался создать class Index extends Profile Я получаю сообщение об ошибке:

 Fatal error: Class 'Profile' not found 

CodeIgniter пытается найти этот класс в index.php который я запускаю.

  • Сравнение поплавков - такое же число, но не равно?
  • Многомерный массив в php SESSION
  • HTTP Auth через PHP - PHP_AUTH_USER не установлен?
  • отправить переменную javaScript в переменную php
  • Почему мои файлы cookie не установлены?
  • Каково название оператора «<<<»?
  • Где моя ошибка? Или, может быть, есть более лучший способ выделить общую логику?

    3 Solutions collect form web for “Расширение класса контроллера в CodeIgniter”

    Полагаю, вы поместили свой MY_Controller в / application / core и задали префикс в конфиге. Однако я был бы осторожен в использовании индекса как имени класса. Как функция / метод в Codeigniter имеет особое поведение.

    Если вы хотите расширить этот контроллер, вам нужно поместить классы в один и тот же файл.

    Например, ядро ​​ввода / приложения

     /* start of php file */ class MY_Controller extends CI_Controller { public function __construct() { parent::__construct(); } ... } class another_controller extends MY_Controller { public function __construct() { parent::__construct(); } ... } /* end of php file */ 

    В / приложение / контроллеры

     class foo extends MY_Controller { public function __construct() { parent::__construct(); } ... } 

    или

     class bar extends another_controller { public function __construct() { parent::__construct(); } ... } 

    Все классы, которые вы распространяете, должны жить в каталоге приложений / CORE, поэтому в вашем случае должны находиться как My_Controller, так и Profile. Все контроллеры «конечной точки» будут жить в папке приложений / контроллеров

    ОБНОВИТЬ

    Я стою исправлено. Расширенные классы должны жить в одном файле. @ Ответ Роунеля показывает, как реализовать

    После некоторой борьбы с версией 3 и этой проблемой я решил, что это не плохое решение …

     require_once BASEPATH.'core/Controller.php'; require_once APPPATH.'core/MYCI_Controller.php'; 

    добавить эту вторую строку, где первая существует в системе / ядре / CodeIgniter.php

    [Если не слишком поздно, я настоятельно рекомендую против php и / или CodeIgniter.]

    PHP is the Best Programming Language in the world.