CodeIgniter не умеет наследовать контроллеры и модели

Мой любимый фреймворк CodeIgniter, который я сейчас использую для написания проекта не предоставляет возможности использовать наследование моделей и контроллеров. По началу написания текущего проекта, впрочем как и к концу наприсания предыдущего, особо не напрягало не возможность наследования. Конечно грех не воспользоваться возможностью расширения системного класса Controller. Но этого хватает только чтоб сделать самое базовое. Максимум – прикрутить инициализацию и объявить абстрактные методы для перегрузки в потомках.

Прошло время, и теперь получается, что копирую кусочки(а не большие куски) в большом количестве между родственными по действию классами. Как же хочется их объединить в одно, сгруппированное по смыслу! Например написать абстрактный класс для обычных страниц(просмотр, редактирование, поиск), чтоб была возможность перегрузить его и сделать потомки которые умеют отображать, например, такие вещи как: страницы помощь сайта, вступление к сайту, контакты, о сайте и прочее..

Есть выход – давно появившлся фрейворк Kohana, основанный на том же CI, его форк, но теперь работающий полностью на пхп5. В нём есть возможность перегружать что угодно хоть сколько раз %). Но переписывать уже поздно.. К плюсам Коханны можно отнести появление ORM и использования хэлперов как статик-классы

Менее глобальный ход – загрузить(дада просто include…) супер класс перед описанием дочернего класса. Очень не красиво, да и не гибко. Зато работает…

Как то-так (с)

  • privet

    А как на счет yii?

  • ruX

    Про yii до этого не слышал, видимо оказывается довольно мощьный фреймворк. Вообще их туча, и есть на много “умнее”, вместе с тем менее поворотливые, например cakePHP и sympony

    Меня интересовали именно codeIgniter-based фреймворки

  • А кто мешает объявить свой класс в MY_Controller или MY_Model? o_O
    У меня часто бывает так, что в MY_Controller или MY_Model несколько классов ;)

  • ruX

    В кучу – это не то.. Нарушается идея(?) фреймворка и его регламентов.
    Тем более когда в одном файле сложнее ориентироваться.
    Это скорее такой же костыль как и include/require другой класс для якобы “каскадирования”

  • >>да да просто include_once
    Черт, а я так и сделал. Не могли бы Вы объяснить, почему это не гибко?