Я хочу создать два родительских контроллера: один для администратора и один для сайта пользователя. Они должны расширить обычный класс Controller, но каждый из них должен делать разные вещи.
Я написал статью, показывающую, как вы это делаете.
http://philsturgeon.co.uk/news/2010/02/CodeIgniter-Base-Classes-Keeping-it-DRY
Вам необходимо создать функцию __autoload () в вашем config.php или напрямую включить базовый контроллер выше определения класса.
Это довольно просто. Сделайте следующее:
your_ci_app/application/core/
MY_Controller.php
Откройте MY_Controller.php и добавьте несколько классов, например:
class Admin_Parent extends CI_Controller { public function __construct() { parent::__construct(); } public function test() { var_dump("from Admin_Parent"); } } class User_Parent extends CI_Controller { public function __construct() { parent::__construct(); } public function test(){ var_dump("from User_Parent"); } }
Создайте дочерние контроллеры в этом каталоге your_ci_app/application/controllers/. Я назову это adminchild.php
your_ci_app/application/controllers/
adminchild.php
Откройте adminchild.php и создайте свой код контроллера, убедитесь, что вы расширили имя родительского класса, например:
class Adminchild extends Admin_Parent { function __construct() { parent::__construct(); } function test() { parent::test(); } }