В настоящее время в интернете можно найти много фреймворков для создание web приложений, которые решают много задач, как узкоспециализированных, так и общих. На данный момент основной список популярных и известных фреймворков, это: Zend Framework, Yii, Kohana, CodeIgniter, CakePHP, Symfony и популярный но не PHP фреймворк – Ruby on Rails. Это список, так сказать, гигантов, которые уже долгое время неизменно возглавляют список PHP фреймворков. Можно найти еще больший список менее популяных фреймворков, но они в большинстве своем узкоспециализированные и созданы, в основном, для решения определенных задач.
После долгого поиска, выбор мой пал на CodeIgniter. Самый оптимальный фреймворк для решения большинства обычных задач и запросов. Весит совершенно не много, чтобы настроить достаточно заполнить несколько переменных в конфигурационном файле, а из коробки уже предоставлено много классов, библиотек, помощников, например:
- Form Validation – класс предоставляющий возможности проверки данных формы на правильность.
- CAPTCHA – помощник, предоставляющий работу с капчей
- работа со многими базами данных (MySQL, PostgreSQL, MSSQL и т.д.).
То есть стандартного архива достаточно, чтобы решить практически все основные задачи и запросы. Но если кого-то не удовлетворит основной набор классов и функций, в интернете можно найти большое количество разнообразных дополнительных классов, библиотек и помощников для решения каких-то определенных проблем.
Большой плюс этого фреймворка в том, что много русскоязычных форумов, блогов и сообществ посвященных именно CodeIgniter’у. На них можно узнать о нем много нового и интересного, найти решения каких-то проблем или задач. Так же есть полная русская документация по всему фреймворку, можно даже сказать учебник по нему.
Сам CodeIgniter, как и большинство фреймворков, использует шаблон программирования MVC (Model View Controller). С не особо жесткими привязками к папкам, но все же предпочтительнее, чтобы все файлы контроллеры находились в папке controllers, модели – models, вьюшки (отображения) – views. Пару слов о модели MVC: model – view – contoller (модель – отображение – контроллер), шаблон программирования, где используется жесткое отделение ролей, то есть models (модели) работают только с базами и ничего больше, никаких преобразований данных, только запросы к базе; views (отображения или вьюшки, в простонародье) – отображение данных, то есть именно разметка HTML и CSS стили, ровно внешний вид приложения; controllers (контроллеры) – вот тут и происходит преобразование данных в нужные форматы и перенаправление их к моделям и вьюшкам. Собственно вся работа протекает через контроллеры и CodeIgniter позволяет писать как один толстый контроллер, так и много маленьких.
В этом фреймворке используется URI (опция отключаемая), т.е. определение где и какую функцию выполнить осуществляется по адресной строке. http://пример.рф/[класс контроллера]/[метод класса]/[аргументы]. Например: http://пример.рф/products/bread/rye. То есть мы вызовем в контроллере products метод bread с аргументом rye. Это довольно удобно, к тому же получается читабельная адресная строка (ЧПУ – ЧеловекоПонятный Урл), что в наше время очень востребованно. Для работы с URI предоставлено много функций и главное роутинг, то есть можно задать определенные правила, по которым будут вызываться нужные классы и методы в соответствии с адресной строкой.
Изначально у меня была проблема с привыканием к этому шаблону. Это не то, что писать на голом PHP и в один файл включать все что хочешь и как хочешь. Здесь уже идет разделение, о котором упоминал выше. Поэтому сначала долго думал где и зачем писать код. Зато когда уже привыкаешь все идет легко и быстро, а самое главное после CodeIgnitera сложновато переходить обратно на PHP.
На сегодняшний день последняя версия CodeIgnitr’а – 2.1.3. Минус его в том, что версии выше 2 несовместимы с версиями выше 1, т.е. разные плюшки и примочки, написанные ко 2 версии, к web-приложению, написанному на 1 версии, прикрутить уже не удастся. Зато плюс (в отличие от Yii) в том что версии с одинаковыми первыми цифрами совместимы между собой.
Про этот фреймворк, можно писать и писать. Само собой у него есть свои минусы и какие-то задачи на нем будет сложнее решить, чем на каком-то другом фреймворке. Фреймворки как и любые языки программирования, так же как и любой инструмент не универсальны и созданы для решения каких-то проблем и задач. Для меня он самый оптимальный. Легкий, быстрый, легконастраиваемый, понятный, много русской документации и поддержки, большая фанатская база. Кому-то он понравится, кому-то нет, но советую попробовать, если и окажется неудобным, то хотя бы освоите Объектно-ориентированное программирование (ООП) и шаблон программирования MVC.
Используем Yii для создания своих проектов. Все устраивает: обширное сообщество, отличная документация.
Согласен CodeIgniter прост и удобен, у него отличные имена методов, которые легко запоминаются.