CodeIgniter — популярный MVC фреймворк с открытым исходным кодом, написанный на языке программирования PHP, для разработки полноценных веб-систем и приложений.
Особенности
- CodeIgniter отличает простота, которая достигается благодаря следующим факторам:
- Качественная и полная документация с примерами, а также большое сообщество и Wiki
- Множество видео-уроков, которые можно найти как на официальном сайте, так и на сторонних ресурсах
- Фреймворк дает свободу программисту, не создавая каких-либо структурных ограничений и конвенций
- Программисту не требуется учиться пользоваться генераторами кода из командной строки
- CodeIgniter работает практически на любом хостинговом плане, который имеет поддержку PHP версии 5.1 и выше
- CodeIgniter считается одним из быстрых и не требовательных к ресурсам фреймворков
Возможности
- Поддержка баз данных MySQL, PostgreSQL, MSSQL, SQLite, Oracle.
- Поддержка псевдо-ActiveRecord, который по большей части повторяет синтаксис языка SQL
- Легко расширяемая система за счет возможности использования сторонних и самописных библиотек, а также дополнения или переопределения существующих.
- Поддержка как сегментированных ЧПУ, так и обычных URL-ов с передачей параметров.
- Фреймворк содержит в себе множество необходимых библиотек, которые создают функциональность для работы с файлами, отправки электронных писем, валидации форм, поддержки сессий, работы с изображениями и так далее.
- Обладает возможностью кешированияна стороне сервера SQL-запросов и генерируемых html-страниц. С версии 2.0 для кеширования могут использоваться XCacheили APC.
- В 2011 году появился менеджер пакетов под названием Sparks, который позволяет легко установить сторонние библиотеки с помощью командной строки.
- В 2011 году появилось дополнение, которое делает возможным поддержку миграций.
- Поддержка модульности (HMVC) с помощью дополнений
- По умолчанию CodeIgniter не использует шаблонизаторы, но есть возможность использовать его собственный или один из альтернативных шаблонизаторов
Примеры кода
Active Record
Выбрать все из таблицы
$this->db->get('table_name');
Эквивалент SQL:
SELECT * FROM `table_name`
Пример с операторами JOIN и LIMIT =
public function getData($id = 0, $offset = 0, $limit = 30) {
$result = $this->db->select('table1.id, table2.name')
->from('table1')
->join('table2', 'table2.id=table1.id', 'left');
if ($id)
return $result->where('table1.id', (int)$id)->limit(1)->get()->row();
else
return $result->limit($limit, $offset)->get()->result();
}
Сценарий 1 (когда $id = 0):
Данные: $id = 0, $offset= 10, $limit = 30
SQL на выходе:
SELECT table1.id, table2.name
FROM table1
LEFT JOIN table2 ON table2.id = table1.id
LIMIT 10, 30
Функция вернет массив объектов. (db->result())
Сценарий 2 ($id отличен от нуля):
Данные: $id = 5, $offset = 0, $limit = 30
SQL на выходе:
SELECT table1.id, table2.name
FROM table1
LEFT JOIN table2 ON table2.id = table1.id
WHERE table1.id = 5
LIMIT 1
Функция вернет один объект (db->row())
Критика фреймворка
- Иногда CodeIgniter критикуют за необычную с точки зрения объектно-ориентированного проектированияархитектуру.
- Некоторые приверженцы CakePHPсчитают, что свобода, предоставляемая программисту в CodeIgniter, поощряет расхлябанный стиль программирования.
- Несмотря на то, что данный фреймворк используют многие профессиональные разработчики и веб-студии, многие считают, что CodeIgniter подходит только новичкам.