Обзор библиотек для замены View в Code Igniter

26th Сентябрь 2011 | Категории: Code Igniter, PHP | Метки: , ,

В прошлой статье «Недостатки View в Code Igniter» я ругал стандартный механизм работы с View. Всю печаль от использования стандартных отображений я познал еще на заре погружения в CI. Быстро пробежавшись по форумам, выбрал для себя решение от SamDark, которое называлось просто View. К слову, использую её и по сей день.

Но вот зреет крупный новый проект, и необходимо выбрать новое решение (или согласиться с тем, что старое вполне себе годится). Поэтому сегодня будет обзор библиотек для работы с отображениями. Только сразу договоримся, что рассматривать шаблонизаторы и парсеры — не будем. Это тема для отдельной статьи.

Зачем использовать сторонние библиотеки

Стандартная работа с отображением в Code Igniter неудобна (ссылку на обзор давал в начале статьи). К тому же в сторонних библиотеках есть масса удобных фишек:

  • Есть главный шаблон (layout), который можно сменить на лету из контроллера (у меня, к примеру, есть 2 layout’a для вывода контента: с левым сайдбаром и без него);
  • Агрегатор JS/CSS (в зависимости от страницы я подключаю jquery, flot, table-sorter. Грузить все это добро на главной — незачем);
  • Некоторые библиотеки умеют минимизировать JS/CSS код, собирая его в один файл;
  • Работа с блоками, меню, хлебные крошки и т д;

Качества и возможности библиотек для работы с View

1. Простота и легкость кода. В результате каждого запроса пользователя будет вызываться библиотека для работы с View. Чем больше в ней кода и лишнего функционала — тем больше будет расходоваться ресурсов сервера.

2. Функционал. В противовес к пункту № 1. Минимализм — это хорошо. Но базовый функционал должен присутствовать.

3. Активность разработки. Библиотека может быть супер хорошей, но если единственный разработчик бросил её 3 года назад, то все найденные баги будете править сами. Про новый функционал так же можно позабыть. Рано или поздно может настать такой момент, когда новая версия фреймворка просто окажется с ней несовместимой.

4. Блоки. При создании порталов часто возникает необходимость оперировать блоками (menu, sidebar, content, footer). Если вы планируете использовать гибкую структуру страниц — обратите внимание на библиотеки с подобным функционалом.

5. Конфликт с другими библиотеками. Обычно есть 2 причины конфликтовать — необычный механизм загрузки (хуки, переопределение сторонних библиотек) или использование стороннего шаблонизатора (Smarty, Twig, Dwoo) совместно с библиотекой.

6. Простота установки и обновления. Чем меньше файлов нужно скопировать/настроить тем лучше. К тому же, большим плюсом является наличие проекта на github и/или поддержика установки через sparks. Sparks — это мегаудобная библиотека-загрузчик и консольная утилита, позволяющая в два клика устанавливать библиотеки для Code Igniter.

Заканчиваем лирическое вступление, переходим к обзору библиотек для замены стандартного механизма View в Code Igniter. К сожалению, авторы не блещут креативом, и почти все библиотеки называются одинаково.

Обзор

Для удобства последующего выбора библиотек разделим их на 3 категории. От гигантских комбайнов до небольших поделок.

«Комбайны»

Ocular Template Library — Умеет работать с блоками. Есть встроенный механизм генерации меню и «хлебных крошек». Для инициализации использует код в MY_Loader. Если у вас уже есть этот файл в проекте (к примеру от HMVC) — произведите аккуратное совмещение, либо — погуглите на предмет совместной работы. По заверениям автора — Ocular работает совместно с HMVC.

Внимание, автор проводил нагрузочное тестирование с помощью siege: демо-проект со стандартным View и тот же самый проект с Ocular. Падение производительности составило около 20%, поэтому прежде чем использовать у себя этого монстра, исследуйте его на своем проекте.

«Средняя весовая категория»

Template Library (by Colin Williams) — Умеет работать с блоками. Умеет использовать сторонние шаблонизаторы (подобная фишка заявлена только у этой библиотеки). Самый большой минус — не обновлялась с 2008 года.

Template Library (by coolweb.ru) — Умеет работать с блоками. Не обновлялась с 2009 года. Используется MY_Loader.

Code Igniter Template (by Phil Sturgeon, sparks) — Более 100 Watcher’ов на github. Есть встроенный механизм генерации «хлебных крошек». Может использовать стандартный Parser, либо же свою библиотеку для работы с Dwoo.

«Легковесы»

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

Сodeigniter Template (by duellsy)

Code Igniter Template (by hovatterz, sparks)

Code Igniter Contentful (by Shawn Dellysse, sparks) — Использует хелпер для вывода информации в шаблон. По мне — так много лишних функций приводит к захламлению шаблонов. Не понравился.

Code Igniter Layout (by Richard Davey, sparks) — Использует хуки для инициализации папки с шаблонами.

View (by SamDark) — Не обновлялся с весны 2010 года.

Сводная таблица

Название Версия Обновление min CI blocks breadcrumbs menu
Ocular-Template-Library v2.12 28.10.2010 v1.7 + + +
Template Library v1.4.1 01.11.2008 v1.7 +    
Template Library v0.1 30.05.2009 v1.7.1 +    
CodeIgniter-Template (sparks) v1.9.0 12.09.2011 v2.0.3   +  
Codeigniter-template v2.1 09.09.2011 v2.0      
CodeIgniter-Template-Library (sparks) v1.0.0 26.07.2011 v2.0      
codeigniter-contentful (sparks) v1.0.0 02.09.2011 v2.0      
CodeIgniter-Layout (sparks) v1.0.0 31.05.2011 v2.0      
View v0.9 31.05.2010 v1.7      

PS. Очень понравилась библиотека Template от Phil Sturgeon и Ocular Template Library.

Subscribe without commenting


  1. 28th Сентябрь 2011 в 10:57

    Стандартных View более чем достаточно. Переопределите класс CI_Controller (нужно делать MY_Controller) и перед вызовом любого метода любого контроллера делайте before и after. В before проверяйте авторизацию и прочие плюшки, в after пихайте все данные в $this->load->vars($data); и вызывайте корневую view. Которая соберёт страницу.
    никакого мусора, всё красиво и прозрачно.

    ах да, я уже об этом писал в статье по ссылке.

  2. Тарлюн Максим
    28th Сентябрь 2011 в 11:16

    @IAD
    Гибкость и возможности будет страдать.
    Если использовать выше описанные библиотеки только для упрощения передачи переменных и вложенных View — то да, подойдет и ваш вариант.

    Но ведь там есть и другой, очень полезный функционал.

  3. Ded
    9th Февраль 2012 в 17:45

    Ocular Template Library ссылка не работает! Подскажи есть ли документация на русском языке? Если есть дай ссылку пожалуйста!

  4. Тарлюн Максим
    9th Февраль 2012 в 19:18

    @Ded
    На русском языке документации и не было.
    Документация на английском доступна здесь: https://github.com/lonnieezell/Ocular-Template-Library/wiki/

  5. Ded
    9th Февраль 2012 в 19:59

    Понял, спасибо хорошая статья!

  6. 7th Февраль 2013 в 11:52

    Спасибо! Очень интересно и полезно! Сам недавно начал искать подобное для большого проекта… А у Вас все описано и с ссылками! 🙂