CodeIgniter

Поделись знанием:
Перейти к: навигация, поиск
CodeIgniter
Тип

Программный каркас для создания веб-приложений

Автор

EllisLab, Inc.

Разработчик

British Columbia Institute of Technology

Операционная система

Кроссплатформенный

Последняя версия

3.1.0[1] (26 июля 2016 г.)

Состояние

в активной разработке

Лицензия

CodeIgniter License Agreement[2]

Сайт

[www.codeigniter.com/ eigniter.com]

К:Википедия:Статьи без изображений (тип: не указан)

CodeIgniter — популярный MVC фреймворк с открытым исходным кодом, написанный на языке программирования PHP, для разработки полноценных веб-систем и приложений. Разработан компанией EllisLab (англ.), а также Риком Эллисом (Rick Ellis) и Полом Бурдиком (Paul Burdick).

Текущая стабильная версия CodeIgniter’а (CodeIgniter 2.x), как и более ранние версии, распространяются под проприетарной лицензией в стиле Apache/BSD, однако разрабатываемая сейчас ветвь CodeIgniter 3 перелицензирована под MIT[3].





История

Первый публичный релиз фреймворка произошёл 28 февраля 2006 года. С выходом версии 2.0 28-го января 2011 года CodeIgniter разделился на две ветки:

  1. CodeIgniter Core — ветка, которая делает акцент на стабильности, в связи с чем развивается медленно. Эта версия фреймворка является ядром популярной CMS ExpressionEngine 2.0.
  2. CodeIgniter Reactor — ветка, которую развивает сообщество. Эта ветка развивается быстро и содержит самые новые возможности.

9 июля 2013 года компания-разработчик в своём блоге разместила пост о поиске нового владельца для фреймворка [ellislab.com/blog/entry/ellislab-seeking-new-owner-for-codeigniter EllisLab Seeking New Owner for CodeIgniter].

6 октября 2014 года EllisLab объявил, что CodeIgniter продолжит своё развитие под руководством Технологического Института Британской Колумбии.

30 марта 2015 года вышла версия CodeIgniter 3.0.0

Изменения версии:

  • Каркас выпущен под лицензией MIT
  • Драйверы баз данных прошли огромный рефакторинг
  • PDO является полностью функциональной с subdrivers
  • Появилась новая библиотека сессии
  • Появилась новая библиотека шифрования
  • Блок тестирования был доукомплектован, улучшено покрытие кода
  • Для работы рекомендуется PHP 5.4 или новее, но Codeigniter по-прежнему может работать на PHP 5.2.4

8 октября 2015 года вышла версия CodeIgniter 3.0.2

31 октября 2015 года был выпущен CodeIgniter 2.2.6, и выпуск безопасности для 2.x версий.

Изменения в версии:

  • Исправлены ​​XSS уязвимости в библиотеке безопасности метода xss_clean ().
  • Изменен метод конфигурации библиотеки base_url (), возврат к $ _SERVER ['server_addr'] для того, чтобы избежать инъекции заголовка узла.
  • Изменен помощник CAPTCHA.

Это последнее планируемое обновление для CodeIgniter 2x, которое достигло окончании срока службы.

1 ноября 2015 года была выпущена версия CodeIgniter 3.0.3  с патчами и некоторыми мелкими деталями. Это версия рекомендуется для всех пользователей версии 3x.

Особенности

  • CodeIgniter отличает простота[4], которая достигается благодаря следующим факторам:
    • Качественная и полная документация с примерами, а также большое сообщество и Wiki[4][5]
    • Множество видео-уроков, которые можно найти как на официальном сайте, так и на сторонних ресурсах[6][7][8][9]
    • Фреймворк дает свободу программисту, не создавая каких-либо структурных ограничений и конвенций
    • Программисту не требуется учиться пользоваться генераторами кода из командной строки
  • CodeIgniter работает практически на любом хостинговом плане, который имеет поддержку PHP версии 5.1 и выше
  • CodeIgniter считается одним из быстрых и не требовательных к ресурсам фреймворков[5][10]
  • Малый размер дистрибутива[5] (размер версии 2.1.1 составляет всего 2.2 МБ)
  • Фреймворк позволяет отказаться от моделей (несмотря на то, что это не приветствуется и не является хорошей практикой)
  • Документация CodeIgniter пропагандирует «толстые» контроллеры и «тонкие» модели. Валидация и построение бизнес-логики происходят в основном в контроллере. Несмотря на это, фреймворк дает свободу разработчику, поэтому он может самостоятельно выбрать подход к разработке приложения

Возможности

  • Поддержка баз данных MySQL, PostgreSQL, MSSQL, SQLite, Oracle.
  • Поддержка псевдо-ActiveRecord, который по большей части повторяет синтаксис языка SQL
  • Легко расширяемая система за счет возможности использования сторонних и самописных библиотек, а также дополнения или переопределения существующих.
  • Поддержка как сегментированных ЧПУ, так и обычных URL-ов с передачей параметров.
  • Фреймворк содержит в себе множество необходимых библиотек, которые создают функциональность для работы с файлами, отправки электронных писем, валидации форм, поддержки сессий, работы с изображениями и так далее.
  • Обладает возможностью кеширования на стороне сервера SQL-запросов и генерируемых html-страниц. С версии 2.0 для кеширования могут использоваться XCache или APC.
  • В 2011 году появился менеджер пакетов под названием Sparks, который позволяет легко установить сторонние библиотеки с помощью командной строки.
  • В 2011 году появилось дополнение, которое делает возможным поддержку миграций.
  • Поддержка модульности (HMVC) с помощью дополнений
  • Несмотря на отсутствие ORM в стандартом пакете, существует возможность использования PHP ActiveRecord, Doctrine, Propel и некоторых других ORM после небольших изменений или дополнений в исходном коде фреймворка
  • По умолчанию CodeIgniter не использует шаблонизаторы, но есть возможность использовать его собственный или один из альтернативных шаблонизаторов (Smarty[11], TinyButStrong[12]).

Примеры кода

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 по умолчанию не поддерживают ORM.
  • Класс для работы с базами данных практически невозможно расширять и изменять из-за плохо продуманной архитектуры.
  • Несмотря на то, что данный фреймворк используют многие профессиональные разработчики и веб-студии, многие считают, что CodeIgniter подходит только новичкам.

Влияние CodeIgniter

CodeIgniter послужил базой для таких фреймворков, как Kohana и Rain Framework (англ.), многие идеи CodeIgniter применены во фреймворках Fuel PHP[13] и CodeLighter[14].

Фреймворк Kohana изначально был ветвью CodeIgniter и был создан с целью использования всех возможностей PHP5 с сохранением простоты и высокой производительности CodeIgniter. Он отличался от CodeIgniter отсутствием поддержки PHP4 и наличием некоторых дополнительных библиотек (ORM, Auth и других). Если версии Kohana 2.x все ещё чем-то были схожи с CodeIgniter, то современные версии (3.x) фактически не имеют с ним ничего общего, кроме истории.

На CodeIgniter основано множество CMS: Fuel CMS[15], MaxSite CMS[16], Cogear[17], PyroCMS[18], ImageCMS и другие.

Напишите отзыв о статье "CodeIgniter"

Ссылки

  • [codeigniter.com/ codeigniter.com] (англ.) — Сайт фреймворка
    • [forum.codeigniter.com/ Официальный форум] (англ.)
    • [www.codeigniter.com/docs Документация] (англ.)
  • [cidocs.ru cidocs.ru] (рус.) — Активный проект перевода документации на русский язык
  • [code-igniter.ru/ code-igniter.ru] (рус.) — Документация на русском языке для версии 1.6.3
    • [code-igniter.ru/forum/ Форум] (рус.)
    • [code-igniter.ru/wiki/ Wiki-раздел] (рус.)
  • [code.google.com/p/codelighter/ CodeLighter] — Легковесный фреймворк использующий идеологию, синтаксис, модули и плагины Codeigniter’a
  • [getsparks.org/ Sparks] (англ.) — Сайт менеджера пакетов Sparks
  • [philsturgeon.co.uk/ philsturgeon.co.uk] (англ.) — Блог Фила Старджена (Phil Sturgeon) — одного из активных разработчиков фреймворка
  • [hackerone.com/codeigniter CodeIgniter на HackerOne] - Исследование безопасности CodeIgniter на HackerOne

Проекты, выполненные на CodeIgniter

[tranquillpoet.com tranquillpoet.com] (англ.) — IDE для поэтов, исходники доступны на GitHub
  • [projectbubble.com/ Project Bubble — система управления проектами ] (англ.)

См. также

Примечания

  1. [forum.codeigniter.com/thread-65803.html CodeIgniter 3.1.0 Released]
  2. [codeigniter.com/user_guide/license.html CodeIgniter License Agreement]
  3. [github.com/bcit-ci/CodeIgniter/blob/develop/user_guide_src/source/license.rst CodeIgniter/license.rst at develop · bcit-ci/CodeIgniter · GitHub]
  4. 1 2 [setti.biz/574/ CodeIgniter vs. CakePHP]. [www.webcitation.org/65oNJ006c Архивировано из первоисточника 29 февраля 2012]. (рус.)
  5. 1 2 3 [devtrench.com/posts/codeigniter-vs-symfony CodeIgniter vs Symfony]. [www.webcitation.org/65oNKBxFf Архивировано из первоисточника 29 февраля 2012]. (англ.)
  6. [codeigniter.com/tutorials/ CodeIgniter Video Tutorials]. [www.webcitation.org/65oNLP4Pj Архивировано из первоисточника 29 февраля 2012]. (англ.)
  7. [derekallard.com/blog/post/more-codeigniter-video-tutorials-from-the-community CodeIgniter Video Tutorials By Community]. [www.webcitation.org/65oNM0Prj Архивировано из первоисточника 29 февраля 2012]. (англ.)
  8. [net.tutsplus.com/articles/news/codeigniter-from-scratch-day-1/ CodeIgniter From Scratch]. [www.webcitation.org/65oNMgYU3 Архивировано из первоисточника 29 февраля 2012]. (англ.)
  9. [net.tutsplus.com/articles/news/easy-development-with-codeigniter/ Easy Development With CodeIgniter]. [www.webcitation.org/65oNNlH9T Архивировано из первоисточника 29 февраля 2012]. (англ.)
  10. [pr0digy.com/codeigniter/benchmark-update-static-cake-codeigniter-kohana/ Benchmark update: Cake vs. CodeIgniter vs. Kohana]. Pr0digy.com (3 сентября 2008). Проверено 24 июля 2009. [www.webcitation.org/65oNOo2JB Архивировано из первоисточника 29 февраля 2012]. (англ.)
  11. Известно несколько решений, см., к примеру [totoiono.enkidu.ru/prikruchivaem-smarty-k-codeigniter Прикручиваем Smarty к CodeIgniter]
  12. [codeigniter.com/wiki/TinyButStrong_Template_Engine/ TinyButStrong Template Engine]
  13. [fuelphp.com/ FUEL — A simple, flexible, community driven PHP5.3 framework]
  14. [code.google.com/p/codelighter/ codelighter] Codeigniter light! Simple, small and lightweight php5 codeigniter-like framework
  15. [www.getfuelcms.com/ FUEL CMS: A Rapid Development CodeIgniter CMS]
  16. [max-3000.com Официальный сайт Maxsite CMS. Бесплатная система управления сайтом.]
  17. [cogear.ru cogear — система управления сайтами, бесплатная cms для социальной сети]
  18. [pyrocms.com/ PyroCMS — The modular open-source CodeIgniter CMS]

Отрывок, характеризующий CodeIgniter

Чрез несколько дней после отъезда Анатоля, Пьер получил записку от князя Андрея, извещавшего его о своем приезде и просившего Пьера заехать к нему.
Князь Андрей, приехав в Москву, в первую же минуту своего приезда получил от отца записку Наташи к княжне Марье, в которой она отказывала жениху (записку эту похитила у княжны Марьи и передала князю m lle Вourienne) и услышал от отца с прибавлениями рассказы о похищении Наташи.
Князь Андрей приехал вечером накануне. Пьер приехал к нему на другое утро. Пьер ожидал найти князя Андрея почти в том же положении, в котором была и Наташа, и потому он был удивлен, когда, войдя в гостиную, услыхал из кабинета громкий голос князя Андрея, оживленно говорившего что то о какой то петербургской интриге. Старый князь и другой чей то голос изредка перебивали его. Княжна Марья вышла навстречу к Пьеру. Она вздохнула, указывая глазами на дверь, где был князь Андрей, видимо желая выразить свое сочувствие к его горю; но Пьер видел по лицу княжны Марьи, что она была рада и тому, что случилось, и тому, как ее брат принял известие об измене невесты.
– Он сказал, что ожидал этого, – сказала она. – Я знаю, что гордость его не позволит ему выразить своего чувства, но всё таки лучше, гораздо лучше он перенес это, чем я ожидала. Видно, так должно было быть…
– Но неужели совершенно всё кончено? – сказал Пьер.
Княжна Марья с удивлением посмотрела на него. Она не понимала даже, как можно было об этом спрашивать. Пьер вошел в кабинет. Князь Андрей, весьма изменившийся, очевидно поздоровевший, но с новой, поперечной морщиной между бровей, в штатском платье, стоял против отца и князя Мещерского и горячо спорил, делая энергические жесты. Речь шла о Сперанском, известие о внезапной ссылке и мнимой измене которого только что дошло до Москвы.
– Теперь судят и обвиняют его (Сперанского) все те, которые месяц тому назад восхищались им, – говорил князь Андрей, – и те, которые не в состоянии были понимать его целей. Судить человека в немилости очень легко и взваливать на него все ошибки другого; а я скажу, что ежели что нибудь сделано хорошего в нынешнее царствованье, то всё хорошее сделано им – им одним. – Он остановился, увидав Пьера. Лицо его дрогнуло и тотчас же приняло злое выражение. – И потомство отдаст ему справедливость, – договорил он, и тотчас же обратился к Пьеру.
– Ну ты как? Все толстеешь, – говорил он оживленно, но вновь появившаяся морщина еще глубже вырезалась на его лбу. – Да, я здоров, – отвечал он на вопрос Пьера и усмехнулся. Пьеру ясно было, что усмешка его говорила: «здоров, но здоровье мое никому не нужно». Сказав несколько слов с Пьером об ужасной дороге от границ Польши, о том, как он встретил в Швейцарии людей, знавших Пьера, и о господине Десале, которого он воспитателем для сына привез из за границы, князь Андрей опять с горячностью вмешался в разговор о Сперанском, продолжавшийся между двумя стариками.
– Ежели бы была измена и были бы доказательства его тайных сношений с Наполеоном, то их всенародно объявили бы – с горячностью и поспешностью говорил он. – Я лично не люблю и не любил Сперанского, но я люблю справедливость. – Пьер узнавал теперь в своем друге слишком знакомую ему потребность волноваться и спорить о деле для себя чуждом только для того, чтобы заглушить слишком тяжелые задушевные мысли.
Когда князь Мещерский уехал, князь Андрей взял под руку Пьера и пригласил его в комнату, которая была отведена для него. В комнате была разбита кровать, лежали раскрытые чемоданы и сундуки. Князь Андрей подошел к одному из них и достал шкатулку. Из шкатулки он достал связку в бумаге. Он всё делал молча и очень быстро. Он приподнялся, прокашлялся. Лицо его было нахмурено и губы поджаты.
– Прости меня, ежели я тебя утруждаю… – Пьер понял, что князь Андрей хотел говорить о Наташе, и широкое лицо его выразило сожаление и сочувствие. Это выражение лица Пьера рассердило князя Андрея; он решительно, звонко и неприятно продолжал: – Я получил отказ от графини Ростовой, и до меня дошли слухи об искании ее руки твоим шурином, или тому подобное. Правда ли это?
– И правда и не правда, – начал Пьер; но князь Андрей перебил его.
– Вот ее письма и портрет, – сказал он. Он взял связку со стола и передал Пьеру.
– Отдай это графине… ежели ты увидишь ее.
– Она очень больна, – сказал Пьер.
– Так она здесь еще? – сказал князь Андрей. – А князь Курагин? – спросил он быстро.
– Он давно уехал. Она была при смерти…
– Очень сожалею об ее болезни, – сказал князь Андрей. – Он холодно, зло, неприятно, как его отец, усмехнулся.
– Но господин Курагин, стало быть, не удостоил своей руки графиню Ростову? – сказал князь Андрей. Он фыркнул носом несколько раз.
– Он не мог жениться, потому что он был женат, – сказал Пьер.
Князь Андрей неприятно засмеялся, опять напоминая своего отца.
– А где же он теперь находится, ваш шурин, могу ли я узнать? – сказал он.
– Он уехал в Петер…. впрочем я не знаю, – сказал Пьер.
– Ну да это всё равно, – сказал князь Андрей. – Передай графине Ростовой, что она была и есть совершенно свободна, и что я желаю ей всего лучшего.
Пьер взял в руки связку бумаг. Князь Андрей, как будто вспоминая, не нужно ли ему сказать еще что нибудь или ожидая, не скажет ли чего нибудь Пьер, остановившимся взглядом смотрел на него.
– Послушайте, помните вы наш спор в Петербурге, – сказал Пьер, помните о…
– Помню, – поспешно отвечал князь Андрей, – я говорил, что падшую женщину надо простить, но я не говорил, что я могу простить. Я не могу.
– Разве можно это сравнивать?… – сказал Пьер. Князь Андрей перебил его. Он резко закричал:
– Да, опять просить ее руки, быть великодушным, и тому подобное?… Да, это очень благородно, но я не способен итти sur les brisees de monsieur [итти по стопам этого господина]. – Ежели ты хочешь быть моим другом, не говори со мною никогда про эту… про всё это. Ну, прощай. Так ты передашь…
Пьер вышел и пошел к старому князю и княжне Марье.
Старик казался оживленнее обыкновенного. Княжна Марья была такая же, как и всегда, но из за сочувствия к брату, Пьер видел в ней радость к тому, что свадьба ее брата расстроилась. Глядя на них, Пьер понял, какое презрение и злобу они имели все против Ростовых, понял, что нельзя было при них даже и упоминать имя той, которая могла на кого бы то ни было променять князя Андрея.
За обедом речь зашла о войне, приближение которой уже становилось очевидно. Князь Андрей не умолкая говорил и спорил то с отцом, то с Десалем, швейцарцем воспитателем, и казался оживленнее обыкновенного, тем оживлением, которого нравственную причину так хорошо знал Пьер.


В этот же вечер, Пьер поехал к Ростовым, чтобы исполнить свое поручение. Наташа была в постели, граф был в клубе, и Пьер, передав письма Соне, пошел к Марье Дмитриевне, интересовавшейся узнать о том, как князь Андрей принял известие. Через десять минут Соня вошла к Марье Дмитриевне.
– Наташа непременно хочет видеть графа Петра Кирилловича, – сказала она.
– Да как же, к ней что ль его свести? Там у вас не прибрано, – сказала Марья Дмитриевна.
– Нет, она оделась и вышла в гостиную, – сказала Соня.
Марья Дмитриевна только пожала плечами.
– Когда это графиня приедет, измучила меня совсем. Ты смотри ж, не говори ей всего, – обратилась она к Пьеру. – И бранить то ее духу не хватает, так жалка, так жалка!
Наташа, исхудавшая, с бледным и строгим лицом (совсем не пристыженная, какою ее ожидал Пьер) стояла по середине гостиной. Когда Пьер показался в двери, она заторопилась, очевидно в нерешительности, подойти ли к нему или подождать его.
Пьер поспешно подошел к ней. Он думал, что она ему, как всегда, подаст руку; но она, близко подойдя к нему, остановилась, тяжело дыша и безжизненно опустив руки, совершенно в той же позе, в которой она выходила на середину залы, чтоб петь, но совсем с другим выражением.
– Петр Кирилыч, – начала она быстро говорить – князь Болконский был вам друг, он и есть вам друг, – поправилась она (ей казалось, что всё только было, и что теперь всё другое). – Он говорил мне тогда, чтобы обратиться к вам…
Пьер молча сопел носом, глядя на нее. Он до сих пор в душе своей упрекал и старался презирать ее; но теперь ему сделалось так жалко ее, что в душе его не было места упреку.
– Он теперь здесь, скажите ему… чтобы он прост… простил меня. – Она остановилась и еще чаще стала дышать, но не плакала.
– Да… я скажу ему, – говорил Пьер, но… – Он не знал, что сказать.
Наташа видимо испугалась той мысли, которая могла притти Пьеру.
– Нет, я знаю, что всё кончено, – сказала она поспешно. – Нет, это не может быть никогда. Меня мучает только зло, которое я ему сделала. Скажите только ему, что я прошу его простить, простить, простить меня за всё… – Она затряслась всем телом и села на стул.
Еще никогда не испытанное чувство жалости переполнило душу Пьера.
– Я скажу ему, я всё еще раз скажу ему, – сказал Пьер; – но… я бы желал знать одно…
«Что знать?» спросил взгляд Наташи.
– Я бы желал знать, любили ли вы… – Пьер не знал как назвать Анатоля и покраснел при мысли о нем, – любили ли вы этого дурного человека?
– Не называйте его дурным, – сказала Наташа. – Но я ничего – ничего не знаю… – Она опять заплакала.
И еще больше чувство жалости, нежности и любви охватило Пьера. Он слышал как под очками его текли слезы и надеялся, что их не заметят.
– Не будем больше говорить, мой друг, – сказал Пьер.
Так странно вдруг для Наташи показался этот его кроткий, нежный, задушевный голос.
– Не будем говорить, мой друг, я всё скажу ему; но об одном прошу вас – считайте меня своим другом, и ежели вам нужна помощь, совет, просто нужно будет излить свою душу кому нибудь – не теперь, а когда у вас ясно будет в душе – вспомните обо мне. – Он взял и поцеловал ее руку. – Я счастлив буду, ежели в состоянии буду… – Пьер смутился.