Недостатки Code Igniter

19th Июль 2012 | Категории: Code Igniter, PHP | Метки:

Около года назад я окончательно решил прекратить использование Code Igniter в новых проектах. Почему? Посмотрим на список недостатков.

Auth

А точнее полное отсутствие механизмов авторизации, аутентификации и проверки прав. 5 лет назад – это было приемлемо. Но на дворе 2012 год. В подавляющем большинстве PHP фреймворков все это есть «из коробки». Даже если позиционировать себя как «фреймворк для новичков», необходимо показать простой метод авторизации. В большинстве случаев после предварительного ознакомления новички уходят в более продвинутые фреймворки (чаще всего ими являются Kohana и FuelPHP как наиболее схожие по структуре кода).

ORM

Популярный механизм доступа к данным. Стандартного решения «из коробки» нет. Еще один повод сменить фреймворк.

View

О недостатках стандартной библиотеки View я уже писал: Недостатки View в Code Igniter. Я также писал о библиотеках для замены View: Обзор библиотек для замены View в Code Igniter.

$CI =& get_instance()

Вы просто не представляете, сколько неудобств в свое время мне доставила эта строчка. Сколько часов было потрачено в поисках ошибок и переписывании кода. Для тех, кто не понимает, о чем речь, поясню. В Code Igniter все операции производятся с главным объектом. Надо загрузить библиотеку?

$this->load->library('library');
$this->library->do_something();

Надо загрузить модель?

$this->load->model('mymodel');
$this->mymodel->do_something()

Немного неудобно, но привыкаешь… Пока не начинаешь работать с хуками, хелперами и некоторыми библиотеками. Чтобы получить доступ к главному объекту, нужно получить его инстанс, и код превращается в нечто похожее:

$CI =& get_instance();
$CI->load->model('mymodel');
$CI->mymodel->do_something();

Для примера, если в FuelPHP необходимо вызывать метод модели:

Model\Mymodel::do_something()

Мелочи

В Code Igniter нет HMVC, нормального кэширования, кодогенерации, консоли, присутствует мертвый код «для совместимости со старыми версиями PHP» и многое многое другое. Я не придираюсь. Я просто устал скачивать и настраивать тонну библиотек для исправления всех недочетов.

Послесловие

Code Igniter – хороший фреймворк. В нем много чего нет. Но может того, что нет, вам и не надо? А если надо, то может есть доступные библиотеки? В какой-то момент я понял, что Code Igniter – не для меня. Что я перерос его. И я нашел новый инструмент для своих проектов: FuelPHP.

Subscribe without commenting


  1. ghost
    27th Август 2012 в 19:52

    Почему FuelPHP а не Yii? Аналогично стою перед выбором — «тащить дальше» или «бросить». Для миграции не могу определиться между FuelPHP и Yii.

  2. Тарлюн Максим
    27th Август 2012 в 20:48

    @ghost
    FuelPHP — сильно похож на CI.
    А Yii — другой. Это, кончено, PHP-фреймворк с MVC структурой. Но все же другой.

    Еще можно посмотреть на Laravel.

    В любом случае, вам никто не даст 100% ответа. Нужно потратить пару вечеров. Попробовать альтернативы.

  3. 9th Ноябрь 2012 в 01:24

    yii счас самый перспективный, быстрый ну и наверное лучший на сегодняшний день. Гавно монстры типа zenda и симфони отдыхают

  4. Lezni
    10th Январь 2013 в 22:36

    @Alex
    Назвать zend и symfony говном — кощунство. это 2 наиболее перспективных фреймворка на данный момент. другое дело что порог вхождения для них значительно выше того же yii

  5. Роман
    4th Февраль 2013 в 11:54

    А есть примеры приложений, использующие FuelPHP? Что-то не дается он мне как CI.

  6. Роман
    4th Февраль 2013 в 11:56

    И возможно ли нормально работать с FuelPHP без Oil?

  7. Тарлюн Максим
    4th Февраль 2013 в 12:38

    Роман :

    А есть примеры приложений, использующие FuelPHP? Что-то не дается он мне как CI.

    Посмотрите на официальном форуме: http://fuelphp.com/forums/categories/applications

    Роман :

    И возможно ли нормально работать с FuelPHP без Oil?

    Я бы даже сказал — что нужно работать без кодогенерации.
    Кодогенерация помогает ускорять разработку. Но если вы не понимаете сгенерированный код (или сами не можете его воспроизвести) — то все это только во вред.
    Настоятельно рекомендую попробовать все ручками.

  8. 7th Февраль 2013 в 12:05

    Я пишу многие свои проекты на разных фреймворках. Использую и Yii, и CodeIgniter, Zend Framework 2. Но Codeigniter действительно просто и понятен изначально…

  9. Роман
    8th Февраль 2013 в 05:20

    Дмитрий :Я пишу многие свои проекты на разных фреймворках. Использую и Yii, и CodeIgniter, Zend Framework 2. Но Codeigniter действительно просто и понятен изначально…

    А чем руководствуетесь в выборе фреймворка?

  10. 17th Декабрь 2013 в 16:27

    @Роман
    Руководствуюсь заказчиком и своими предпочтениями. Все зависит от проекта и его ТЗ. Если проект сложный, то стараюсь выбрать фреймворк с модулями и различными уже написанными плагинами. Или наоборот, если нужен простой и легковесный…

  11. Роман
    18th Декабрь 2013 в 02:42

    Перепробовал уже и Fuel, и Symfony, в итоге укатился на RubyOnRails и счастлив =)

  12. User
    21st Апрель 2014 в 06:32

    Зачем перегружать постоянно ?
    Вить есть другие методы:
    $this->load->model(‘mymodel’);
    $this->mymodel->mymethod();