CodeIgniter — упрощаем разработку веб-решений. Часть 2
описание состава фреймворка
Фреймворк CodeIgniter обладает широким рядом преимуществ, среди которых открытость кода, его документированность. Производители уверяют, что все необходимое для разработчика есть в базовой версии — набор библиотек представляет большие возможности для разработки от самых малых до крупных серьезных проектов. Также это достигается возможностью подключения дополнительных компонентов, например плагинов.
Самое простое, но не менее необходимое
HTML Table Class
Данный класс позволяет автоматически генерировать html-таблицы. Причем, кроме самого создания, также есть и очищение, и удаление. Полное управление таблицей тоже ложится на плечи этой библиотеки. Кроме собственно структуры таблицы есть функции для работы с содержимым и внешним видом. Структура может задаваться при создании — количество и названия колонок, однако в процессе работы можно также управлять этим. Внешний вид задается с помощью шаблонов — описания стиля таблицы. Очень полезным окажется возможность использования данных прямо из запроса к базам данных.
Эффективность данного класса очевидна. Необязательно описывать громоздкую разметку для вывода таблицы, а, например, для получения информации из БД достаточно двух строк:
$query = $this->db->query("SELECT * FROM my_table");
echo $this->table->generate($query);
Output Class
Работа данного класса незаметна — осуществляется отправка финальной версии веб-страницы конечному пользователю. Никаких особо видимых действий эта библиотека больше не производит. В ее основе лежат главные функции формирования заголовка страницы, то есть headers. Кроме того, есть возможность управления статусом сервера, а также кешем. По поводу последнего можно сказать, что работа с ним сводится к установлению времени сохранения данных. Папка для кеширования располагается на сервере, и у нее обязательно должны быть прописаны соответствующие права.
Pagination Class
Как видно из названия, класс относится к работе со страницами. В данном случае подразумеваются операции с постраничным выводом информации. И опять формирование данного элемента заметно упрощается. Достаточно задать три параметра: адрес страницы, где, собственно, и будет расположено управление страницами; общее количество данных — число строк, которые возвращает запрос к базам данных; количество строк на страницу — объем строк, желаемый для показа на одной странице. Внешний вид переключателя настраивается в конфигурационном файле. Можно настроить количество цифр в «управляторе» или отражение ссылки в адресной строке в зависимости от установок (например, показ количества строк на страницу). Также есть возможность настройки текстовых ссылок, таких как «последняя страница».
Typography Class
Библиотека-помощник в обработке текста. На вход требуется подавать обычный текст, а на выходе получается корректный HTML-код. Главная функция данного класса auto_typography(), позволяющая отформатировать отрывок текста в автоматическом режиме. Данная функция:
- выделяет абзацы;
- конвертирует разрывы строк;
- конвертирует кавычки и апострофы;
- двойные дефисы превращает в тире;
- двойные пробелы переделывает в одинарные.
URI Class
Библиотека получения информации о текущем местоположении пользователя на сайте. По сути, представляет собой набор функций представления URI. Работа сводится к обработке данных о сегментах URL просматриваемой страницы: получение отдельных сегментов; получение количества сегментов; получение всех сегментов, кроме сервера, и так далее. Также можно сформировать массив, состоящий из сегментов URL, или наоборот.
User Agent Class
Класс, помогающий собрать информацию о браузере, мобильном устройстве или роботе, посещающем сайт. Кроме того, можно получить информацию о ссылающемся ресурсе. В итоге есть функции, возвращающие тип и версию браузера, имя робота, платформы, установленной на субъекте, а также языковую поддержку и кодировку пользователя. А также есть процедура вывода общей информации одной строкой, что может быть полезно, например, для лога на сайте для отслеживания информации о посетителях.
Высший уровень
Benchmarking Class
Замер времени выполнения кода страницы теперь становится элементарным с помощью этого класса. Достаточно разместить в коде метки (старт, финиш), а позже указать место для вывода информации.
Кроме того, таким же образом можно вывести данные об использовании памяти.
Calendaring Class
Работу с календарем можно осуществлять с помощью этого класса. Кроме обычного показа календаря возможно настраивать «события» на даты. То есть, составив массив данных, содержащий адреса страниц, на которые нужно перейти при выборе определенной даты, получаем календарь с ссылками на эти ресурсы, связанные с конкретными датами.
Конечно же, есть возможность настройки отображения. Сюда включаются текущее время, день начала недели (у кого-то этот день — воскресение), кнопки «Следующий», «Предыдущий месяц» и так далее. Язык можно настроить в конфигурационном файле, а названия дней и месяцев — в специальном шаблонном файле (это распространяется на все используемые выходные данные).
The Database Class
Из названия понятно, что смысл данного класса — обслуживание работы с базами данных. В нее включается подключение к БД и получение информации. Подключение никоим образом не контролируется пользователем. Разве что в конфигурационном файле можно настроить параметры подключения к БД. Выводом информации же пользователь может управлять. Смысл в том, что разработчик задает строку запроса в функцию query(), а функция result() получает данные в виде массива.
Email Class
Очень массивная библиотека с большими возможностями. Работа с электроннной почтой проявляется в основных характерных чертах писем, созданных с помощью данного класса:
- поддержка протоколов Mail, Sendmail, SMTP;
- множество получателей;
- скрытые копии;
- HTML или обычный текст;
- приложения;
- приоритеты.
Самое необычное — инструмент отладки, который выводит всю необходимую информацию об отправке.
Рассылка писем настраивается с помощью семнадцати параметров, среди которых тип протокола, кодировка, приоритет, настройки SMTP и так далее. Все они могут указываться в конфигурационном файле библиотеки.
File Uploading Class
Поддержка загрузки файлов на сервер осуществляется с помощью данного класса. В его состав входят функции по формированию формы отправки, а также ее обработки. При посылке данных на сервер и при их успешном приеме формируется страница с сообщением о приеме (success page). Перед загрузкой устанавливаются ее параметры, такие как путь к папке, где будут храниться файлы (с соответствующими правами на доступ), доступные типы файлов, максимальный размер в килобайтах, максимальные размеры в пикселах (для изображений). Кроме того, при загрузке для просмотра информации о процессе можно вызвать соответствующую функцию.
FTP Class
CodeIgniter может предложить также работу с ftp, то есть работу с файлами на удаленном сервере, включающую копирование, переименование и удаление. Для соединения с удаленным хостом требуется вызвать функцию connect() с параметрами соединения и дополнительными флагами, такими как флаг «отладка», включающий режим просмотра возникающих ошибок.
Image Manipulation Class
Класс обработки изображений поддерживает:
- изменение размеров;
- создание thumbnail;
- вращение;
- создание водяных знаков.
Создание водяных знаков сопровождается настройкой большого числа настроек: тип, изображение, признак динамического создания (изображение не хранится на диске, однако оно не может быть выведено более одного раза на странице и его невозможно спозиционировать в место, кроме участка кода, где вызывается функция), качество (в процентах), положение.
Input Class
Класс, обеспечивающий работу с входной информацией, это не обязательно данные с форм, заполняемых пользователем, но также cookies и глобальные переменные. Смысл функции класса — защитить систему от возможного вредоносного вторжения. Для этого библиотека может:
- уничтожить все GET-массивы;
- уничтожить все глобальные переменные (пользовательские), если register_globals включен;
- контролировать ключи POST/COOKIES-массивов, допуская только alfa-numeric-формат;
- использовать XSS-фильтр (Cross-site Scripting Hacks) как глобально, так и для отдельных запросов;
- переводить разрывы строк в \n.
На XSS-фильтре хотелось бы остановиться подробнее. По умолчанию контролирование всех данных в POST/COOKIES-массивах НЕ осуществляется, однако его можно включить в конфигурации. То есть изначально установлено использование по требованию — это можно осуществить вызовом функции xss_clean() из любого места кода. Смысл фильтрации состоит в обнаружении и пресечении попыток выполнения вредоносных (например, написанных на JavaScript) скриптов, нацеленных на POST/COOKIES-данные.
Unit Testing Class
Очень интересный класс, позволяющий тестировать выполнение различных объектов. Он не претендует на звание всеобъемлющего, он очень прост — сверяет результаты с ожиданиями, в том числе и по типу. Сравнение данных осуществляется посредством функции run(), причем если нужна проверка типа, то в качестве ожидания передается строковый параметр с названием типа.
XML-RPC and XML-RPC Server Classes
Библиотека для создания XML-RPC-сервера, а также для работы с запросами к подобным серверам. Отправка запросов осуществляется вызовом соответствующей функции и заданием конкретных параметров соединения с удаленным сервером. Создание своего сервера сводится к заданию функций обработки входящих запросов.
Из примера видно, что запрос, приходящий извне, с параметром new_post, вызовет выполнение метода new_entry класса (контроллера) My_blog.
В итоге
А в качестве резюме можно сказать, что по части больших возможностей и документированности производитель данного фреймворка оправдал ожидания. Довольно широкий ряд библиотек, охватывающий практически все аспекты разработки серьезных веб-приложений, позволит программистам упростить свой труд.
Источник: hostinfo.ru