Статьи Новости Контакты

10.02.2009
Александр Бакланов

CodeIgniter — упрощаем разработку веб-решений. Часть 1

обзор веб-фреймворка для PHP-разработчиков

Знакомство

Сам инструмент позиционируется как небольшое средство для разработчиков, которые живут в мире дедлайнов, и тех, кому надоели громоздкие недокументированные фреймворки. Судя по списку сайтов, построенных с использованием CodeIgniter, многие уже прислушались к данному анонсу и воспользовались детищем компании EllisLab. Что из себя представляет этот «помощник» программиста? Это комплекс библиотек для разработки веб-приложений, покрывающих различные области программирования на языке PHP, начиная от примитивной текстовой обработки до работы с XML, базами данных и безопасностью приложений. При всем этом познания в области PHP определяют степень сложности конечного продукта, но уровень владения языком программирования может быть и невысоким.

CodeIgniter бесплатный, open source-проект. Распространяется по лицензии типа Apache/BSD. Коммерческое использование разработанных с его помощью продуктов допускается в полной мере. Однако в документации к ПО должно быть обязательное упоминание о фреймворке. Также разрешено изменение внутреннего кода с непременным указанием о внесенных поправках.

Основой работы CodeIgniter является использование подхода Model-View-Controller
Основой работы CodeIgniter является использование подхода Model-View-Controller(«Модель — представление — контроллер») — архитектура программного обеспечения, в которой модель данных приложения, пользовательский интерфейс и управляющая логика разделены на три отдельных компонента, так, что модификация одного из компонентов оказывает минимальное воздействие на другие компоненты. Шаблон MVC позволяет разделить данные, представление и обработку действий пользователя на три отдельных компонента. Модель предоставляет данные (обычно для View), а также реагирует на запросы (обычно от контроллера), изменяя свое состояние. Представление (View) отвечает за отображение информации (пользовательский интерфейс). Поведение (Controller) интерпретирует данные, введенные пользователем, и информирует модель и представление о необходимости соответствующей реакции.

Кроме того, фреймворк отличают небольшой размер, расширяемость за счет возможности подключения дополнительных библиотек и плагинов, а также поддержка сообщества пользователей.

Среди черт продукта изготовитель заявляет:

  • простоту использования;
  • большие возможности;
  • совместимость с различными конфигурациями хостингов;
  • низкие требования;
  • не требует знаний в работе к командной строкой;
  • отсутствие привязки к каким-либо правилам кодирования;
  • обширную документацию.

Принцип работы фреймворка можно описать несколькими этапами:

  1. веб-страница index.php, являясь контроллером, определяет действия пользователя, а следовательно, передает сигналы управления на модель;
  2. элемент Routing обрабатывает http-запрос и «решает», что с ним делать;
  3. при существовании информации в кеше данные отправляются обратно пользователю, в противном случае подаются дальше на модель;
  4. компонент Security обрабатывает данные с точки зрения безопасности;
  5. сигнал с контроллера активирует модель, библиотеки, плагины, помощники и скрипты. Выполняется определенный процесс обработки поступившей информации, и выходные данные поступают на элемент представления;
  6. информация преобразовывается в вид, как она должна выглядеть для пользователя.

Установка

Инсталляция CodeIgniter — загрузка с сайта разработчика, распаковка и пара настроек конфигурации

Инсталляция пакета не должна вызвать трудностей. Последняя версия фреймворка скачивается с сайта в виде архива — он должен быть распакован на сервер. Далее в конфигурационном файле application/config/config.php настраивается путь к разрабатываемому приложению, а в настройках баз данных в файле application/config/database.php устанавливаются параметры подключения к оным. Это все манипуляции.

«Человекопонятный URL»

В CodeIgniter есть возможность построения ЧПУ — понятного для человека представления URL. Например, example.com/news/article/my_article. В данном случае каждый сегмент адреса имеет свое значение: news — класс, к которому идет обращение; далее article — функция или метод вызываемого класса; последний (или их может быть несколько) — параметры, передаваемые в функцию.

Контроллеры

Контроллер в рамках фреймворка — это файл класса, который имеет такое имя, по которому к нему можно обратиться по адресу example.com/controller_name/. В контроллере прописываются все его методы, которые могут быть использованы. По умолчанию при обращении к URL, описанному выше, вызывается функция index(). Однако можно прописать множество других, вызов которых возможен при переходе по адресу example.com/controller_name/function_name/. Множество параметров описывается далее — example.com/controller_name/par1/par2/.

Например, для того чтобы при обращении к example.com/blog/ мы обнаружили надпись Hello World!, а при выполнении функции comments(), то есть обращении к example.com/blog/comments/, обнаружили Look at this!, пишем такой код

Как видно, все довольно просто. Если развивать далее, то можно говорить о том, что из этих участков могут быть вызваны представления, библиотеки, плагины, помощники — о них ниже.

Представления

Элемент View подхода MVC в CodeIgniter — это обычная веб-страница или ее часть (шапка, подвал и тому подобное). При этом использование представлений может быть иерархично — один объект может содержать в себе множество подобных. Представление никогда не вызывается напрямую, оно лишь подгружается контроллером. Наряду с html-разметкой в представлении можно использовать PHP-вставки, что расширяет возможности. А особенно это важно с учетом того, что в представление можно передавать информацию из контроллера. Это может быть как одиночная переменная, так и массив данных.

Модели

Модели — классы, содержащие функции обработки информации. Исходя из модели MVC, можно судить о том, что эти данные поступают в модель с контроллера. Обычно входной информацией являются данные из БД. Модели также не могут быть вызваны напрямую, а подгружаются из контроллеров. Однако это не самый рациональный метод работы с моделями. Их загрузку можно сделать автоматической, особенно это касается тех объектов, которые используются часто и глобально. Автозагрузка настраивается элементарно — в специальном файле установок application/config/autoload.php выставляется список конкретных моделей, с которыми впоследствии нужно работать. Подключение модели к БД осуществляется передачей параметров соединения в функцию загрузки.

Helpers и Plugins

Помощники, как видно из названия, призваны помочь исполнить какую-либо незначительную функцию. Например, есть помощники построения веб-форм, загрузки файлов или работы с cookies. В отличие от всех остальных основных элементов фреймворка помощники — наборы достаточно элементарных функций. Они написаны даже без использования объектно ориентированного подхода. Каждая функция выполняет небольшую, строго ограниченную задачу. Однако набор довольно велик, и такая «мелочь» становится очень полезной в работе.

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

Дополнительные особенности

Прежде всего тут нужно сказать о поддержке библиотек — наборе различных функций, требуемых для реализации какой-то определенной цели. По умолчанию в CodeIgniter уже добавлены библиотеки, например, для работы с электронной почтой, xml, шифрованием. Но есть возможность подключения пользовательских классов.

Повлиять на работу ядра можно без его изменения — с помощью хуков

Программисты, готовые «внедриться» в код ядра, могут воспользоваться так называемыми хуками (Hook) — код, влияющий на исполнение основной программы без ее изменения. Например, если разработчик хочет, чтобы его скрипт выполнился до загрузки какого-либо контроллера или сразу же после. Для настройки хука есть несколько возможных вариантов точек срабатывания:

  • pre_system — самое начало срабатывания системы;
  • pre_controller — перед вызовом контроллера;
  • post_controller_constructor — после инициализации контроллера;
  • post_controller — после полного срабатывания контроллера;
  • display_override — перед пересылкой результирующей веб-страницы браузеру;
  • cache_override — позволяет использовать собственную функцию работы с кешем;
  • post_system — при завершении работы системы.

Поддержка пользователей

Отдельной похвалы заслуживает поддержка разработчиков, пользующихся CodeIgniter. Во-первых, полная документация по всем библиотекам, помощникам в принципе по возможностям системы. Кроме доступа к онлайн-версии на сайте фреймфорка в комплект поставки входит еще и офлайн-вариант руководства. Пользоваться им очень удобно — есть поиск (с помощью Google, таким образом, для офлайн-версии должно быть активное соединение с Интернетом), указатель, рубрикатор. Таким образом, у разработчика документация всегда под рукой. Во-вторых, есть сообщество программистов по CodeIgniter во главе с членами команды EllisLab, готовых прийти на помощь по реализации какой-либо проблемы. Единственная проблема — отсутствие поддержки на русском языке.




Скоро на сайте

  • Wordpress

    Серия статей о плагинах к движку WordPrress
  • AJAX

    Проекты и продукты, ориентированные на AJAX
  • Новые сервисы Google

    Обзор новых сервисов Google
 

Copyright © 2003—2017 Все права защищены

При использовании материалов сайта ссылка на hostinfo.ru обязательна

  • хостинг от .masterhost
  • Rambler's Top100