CodeIgniter: базовые понятия и основы работы

CodeIgniter – это легкий, но при этом достаточно мощный и простой в использовании PHP-фреймворк для разработки веб-приложений. Он предоставляет ряд библиотек и вспомогательных функций, значительно ускоряющих процесс разработки. CodeIgniter основан на технике объектно-ориентированного программирования (или OOP) и архитектуре MVC (Model-View-Controller, «модель-представление-контроллер»), что позволяет отделить презентацию от логики. Кроме того, CodeIgniter использует «чистые» URL-ы вместо длинных нечитабельных ссылок.

Данная статья подразумевает, что в среде разработки уже установлен фреймворк CodeIgniter, а база данных и URL-адреса предварительно настроены. Всю необходимую для подготовки информацию можно найти в руководстве «Установка CodeIgniter на сервер Ubuntu 12.04».

Парадигма MVC

Парадигма MVC («модель-представление-контроллер») предназначена для разделения представления и логики. Это означает, что веб-страницы и PHP-скрипты хранятся отдельно, в разных файлах. Это особенно полезно, когда над приложением работает команда разработчиков и дизайнеров, поскольку последним будет гораздо проще выполнить свою работу.

В CodeIgniter модели и контроллеры – это, как правило, PHP-классы, которые нужно объявлять (или расширять стандартные классы CI). Все модели и контроллеры хранятся в отдельных файлах. Представления (или виды) являются простыми HTML-страницами (с расширением .php), которые содержат минимальный PHP-код (в зависимости от используемого шаблонизатора). При необходимости можно даже включать одни представления в другие.

Все самое сложное кодирование (запросы к базе данных, расчеты и т.д.) происходит в модели. Представление – это компонент, при помощи которого сервер собирает и выводит страницу пользователю. А контроллер – это посредник между моделью и представлением, который обрабатывает HTTP-запросы от клиента, ищет соответствующую модель и загружает необходимое представление.

В целом, в CodeIgniter модели использовать необязательно, но желательно. В случае отсутствия модели контроллер будет перегружен кодом, вследствие чего им будет трудно управлять. Конечно, все зависит от размера приложения.

Маршрутизация

Итак, контроллер (Controller) использует модель (Model) для отображения информации при помощи представления (View). Но как клиент запрашивает эту информацию? Другими словами, как CodeIgniter обрабатывает URL-адреса?

Все очень просто. Если вы следовали инструкциям упомянутого ранее руководства (включая раздел по настройке URL-адресов), то вы уже знаете, что URL построен следующим образом (после удаления сегмента index.php):

http://www.example.com/[controller-class]/[controller-method]/[arguments]

Это значит, что после базового URL (в данном случае это example.com) следует имя класса, затем метод (функция класса), а далее – аргументы, переданные этой функции. Если функция требует больше аргументов, они разделяются слешем (символ /). Эта структура очень проста и понятна.

Кроме того, эту структуру можно изменить, используя продвинутые опции маршрутизации. Предположим, есть простое приложение с одним контроллером и методом. Соответствующий метод контроллера можно сделать функцией по умолчанию, которая вызывается, когда пользователь направляет браузер на базовый URL. Кроме того, можно создать несколько правил, которые сделают все сегменты после базового URL-а аргументами для данного метода. Для этого откройте и отредактируйте файл routes.php, расположенный в папке application/config/.

В стандартной установке CodeIgniter этот файл имеет примерно такой вид:

$route['default_controller'] = "welcome";

Опция default_controller задает, какой контроллер будет вызван по умолчанию, если после базового адреса ничего нет. Внесите в эту строку имя нужного контроллера:

$route['default_controller'] = "your_controller";

Сохранив этот файл, откройте базовый URL; при этом будет вызван метод index() заданного контроллера. Это стандартный метод, который вызывается в случае, если в URL-е нужен контроллер, но метод не указан. Снова отредактируйте файл, указав метод, который нужно вызывать по умолчанию:

$route['default_controller'] = "your_controller/your_method";

При переходе на базовый URL указанный контроллер будет вызывать заданный метод. Теперь нужно добавить еще одну строку в файл routes.php, чуть ниже строки default_controller:

$route['(:any)'] = 'your_controller/your_method/$1';

Эта строка превратит все, что было внесено после базового URL, в аргументы заданного метода. Сохраните файл и проверьте работу настоек. Теперь не нужно вносить URL имя контроллера и метода – можно просто задать аргументы. И это далеко не единственный вариант маршрутизации.

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

Библиотеки и хелперы CodeIgniter

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

К примеру, чтобы использовать библиотеку (или класс) Database в контроллере, ее можно загрузить, используя следующую строку, при помощи любого необходимого метода:

$this->load->database();

Кроме того, можно использовать автозагрузку библиотек и хелперов. Это означает, что приложение будет включать их в себя изначально, потому нет необходимости тратить время на загрузку каждого хелпера по отдельности.

Автозагрузка, как правило, применяется для загрузки часто используемых классов и хелперов (например, класса Database и хелпера URL).

Примечание: Класс Database предоставляет очень мощный шаблон Active Record для взаимодействия с БД; хелпер URL имеет полезные функции для вывода ссылки или загрузки различных URL-ов.

Чтобы загрузить Database и URL автоматически, откройте файл autoload.php в папке application/config/ и найдите строку:

$autoload['libraries'] = array();

Замените ее на:

$autoload['libraries'] = array('database');

Этот массив должен содержать имена библиотек, которые нужно загружать автоматически.

Хелперы вносятся в другой массив таким же способом. Замените строку:

$autoload['helper'] = array();

Этой строкой:

$autoload['helper'] = array('url');

Сохраните файл, и после загрузки приложения эти библиотеки и хелперы будут доступны. Чтобы расширить фреймворк, задайте другие библиотеки и хелперы.

Заключение

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

Tags: , , ,

Добавить комментарий