Меню Рубрики

Установка twig без composer

Предложение от 8host.com

Установка и начало работы с Twig

Что такое Twig?

Twig – это современный дружественный шаблонизатор, разработанный для PHP. Будучи более эффективным шаблонным движком, он является отличной альтернативой PHPTemplate при разработке веб-приложения. Его синтаксис очень прост для понимания. Кроме того, Twig устраняет необходимость выполнения лишних динамических PHP-операций в файлах шаблона.

Данное руководство продемонстрирует, как установить Twig на виртуальный выделенный сервер и начать работу с ним.

Примечание: предполагается уже настроенного облачного сервера (предпочтительно Linux). Кроме того, нужно установить LAMP stack (хотя база данных для выполнения руководства не нужна). Для корректной работы Twig также требуется PHP 5.2.4+.

Зачем нужен Twig?

Зачем нужны шаблонизаторы в целом? Все очень просто: для разделения задач. Чтобы рассмотреть этот вопрос на примерах, создайте папку проекта в root-каталоге веб-сервера (/var/www) и назовите его twig:

cd /var/www
mkdir twig
cd twig

Теперь создайте еще пару папок для этого небольшого тестового приложения: одну для PHP-файлов, вторую – для шаблонов Twig соответственно:

В папке app создайте одноименный php-файл.

В него внесите следующий код, который выведет на страницу сообщение «Hello World»:

Сохраните файл и направьте на него браузер (для этого используйте формат ip-адрес/twig/app/app.php). Должно появиться сообщение «Hello world!» в виде заголовка H1.

Так почему бы не использовать этот формат постоянно? Дело в том, что такой PHP-файл может стать гораздо больше и сложнее (что происходит в большинстве случаев), а это повлечет большие проблемы с разработкой макета сайта. Кроме того, тег Н1 был закодирован в непосредственно в echo, что также не лучший вариант работы.

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

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

Созданное только что приложение еще понадобится после установки Twig.

Установка Twig

Рекомендуется устанавливать Twig через Composer, инструмент управления зависимостями PHP. За информацией об этом инструменте можно обратиться к руководству «Установка и использование Composer».

Скачайте инсталлятор Composer в root-папку приложения (twig):

cd /var/www/twig
curl -s http://getcomposer.org/installer | php

Это загрузит файл по имени composer.phar, который является исполняемым файлом Composer. Затем создайте файл с названием composer.json:

И внесите в него следующий код:

Благодаря этому коду приложение будет зависить от движка шаблонов Twig. Теперь давайте использовать команду composer, чтобы установить зависимости:

Теперь файлы Twig загружены в папку vendor/Twig. Если добавить других зависимостей, они также будут установлены в папке vendor.

Теперь нужно «подключить» этот файл к приложению. Опять же, можно использовать функцию автозагрузчика Composer, чтобы загрузить все установленные зависимости. Откройте файл app.php:

Удалите все его содержимое и внесите эту строку:

Данная строка загрузит автозагрузчик Composer, который, в свою очередь, загрузит Twig. Если Twig был установлен другим способом, понадобится автозагрузчик Twig:

require_once ‘/path/to/lib/Twig/Autoloader.php’;
Twig_Autoloader::register();

При использовании Composer в этом нет необходимости.

Под командой require нужно поместить файл шаблона Twig и задать переменную, которую нужно вывести на страницу. Вставьте следующий код:

render(‘page.html’, array(‘text’ => ‘Hello world!’)); ?>

Во-первых, это создаст объект загрузчика, которому передается путь к папке, содержащей файлы шаблонов (пустая на данный момент папка views была создана ранее). Кроме того, этот код также создаст объект среды, в котором хранится конфигурация. В завершение, строка render объекта среды загружает файл шаблона, заданный в качестве первого аргумента и визуализирует его с учетом переменных, заданных в качестве второго аргумента. Теперь нужно создать файл page.html, в который можно внести переменные, содержащие текст, который нужно отобразить.

Если сохранить этот файл и перезапустить файл app.php в браузере, на страницу будет выведен текст, взятый в теги Н1. Теперь, создав этот файл, можете поэкспериментировать с ним. Переменные, заданные через функцию render, теперь можно вносить в фигурные скобки.

Ради эксперимента можете передать несколько переменных шаблону, использовать их в управляющих структурах, обработать их с помощью функций шаблонов или применить фильтры Twig.

Итоги

Это руководство продемонстрировало установку Twig через Composer, а также вывод на экран простых переменных с помощью отдельных файлов шаблонов. Следующее руководство этой серии более подробно рассматривает использование синтаксиса Twig для разработки файлов шаблонов.

источник

PHP шаблонизатор Twig. Введение

В данной статье я расскажу вам, что такое шаблонизатор Twig, и чем он может помочь веб-разработчику.

Любой, кто уже пытался разрабатывать свой сайт на основе методологии MVC, безусловно, встречался с задачей представления данных пользователю. И, если, с визуальным представлением все определено изначально, т.е. макет сайта уже есть и мы понимаем какие элементы и как будут размещены на странице, то с технической стороной этого вопроса не все так просто.

Конечно, мы можем взять представление, дать ему расширение .php, добавить туда код на HTML и CSS, как вариант. Но данное решение не подходит для работы среди разработчиков с более-менее четким разделением сфер ответственности. Т.е. если у вас есть своя веб-студия или вы собираетесь таковую создать (тут вам может пригодиться мой курс Создание собственной WEB-студии за 55 дней), то верстальщик не обязательно должен знать PHP или наоборот. И поэтому, чтобы не загрязнять код шаблона конструкциями языка PHP и сделать разработку проще, стоит использовать PHP шаблонизатор Twig. Но, разве сам PHP не шаблонизатор можете справедливо спросить вы? Ответ здесь не однозначен – и да, и нет.

Читайте также:  Установка прицепных калина хэтчбек

Известно, что PHP начинался как шаблонизатор, но в дальнейшем эволюция языка пошла в ином направлении. И, несмотря на то, что сегодня мы все еще можем использовать PHP в таком качестве, взгляните на пример кода ниже и сами определите, что выглядит проще:

Опытные программисты знают, что PHP многословный язык, и эта избыточность становится еще более очевидной, при формировании HTML контента. А современные системы шаблонизации, наоборот, пытаются уйти от излишней избыточности кода, при этом добавляя еще и свою функциональность поверх средств самого языка. Конечно же, вопросы безопасности и отладки также не обходятся стороной, и им уделяется пристальное внимание. Потому, то я и захотел вам рассказать об одном таком шаблонизаторе PHP – Twig.

TwigPHP шаблонизатор, который компилирует шаблоны. Он позволяет сделать код шаблонов чище и понятнее, и таким образом сократить трудозатраты на обновление. Он расширяем, можно переопределить поведение почти всего движка, включая и ядро.

Устанавливается Twig двумя путями. Можно использовать или архив с исходным кодом, или использовать менеджер пакетов Composer. Но последний предпочтительнее.

composer require twig/twig

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

Таким образом, PHP шаблонизатор Twig будет крайне полезен разработчикам, так все современные фреймворки используют либо его, либо наработки, созданные по аналогии с ним для собственных нужд.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  • BB-код ссылки для форумов (например, можете поставить её в подписи):
  • Комментарии ( 0 ):

    Для добавления комментариев надо войти в систему.
    Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.

    Copyright © 2010-2020 Русаков Михаил Юрьевич. Все права защищены.

    источник

    Composer — менеджер зависимостей для PHP

    Composer (getcomposer.org) — это относительно новый и уже достаточно популярный менеджер зависимостей для PHP. Вы можете описать от каких библиотек зависит ваш проект и Composer установит нужные библиотеки за вас! Причём Composer — это не менеджер пакетов в классическом понимании. Да, он оперирует с сущностями, которые мы будем называть «пакетами» или библиотеками, но устанавливаются они внутрь каждого проекта отдельно, а не глобально (это одно из основных отличий от старого-доброго PEAR).

    Кратко, как это работает:

    1. У вас есть проект, который зависит от нескольких библиотек.
    2. Некоторые из этих библиотек зависят от других библиотек.
    3. Вы описываете в своём проекте те библиотеки, от которых непосредственно зависит ваш код.
    4. Composer находит нужные версии требуемых библиотек для всего проекта, скачивает их и устанавливает в папку вашего проекта.

    При создании Composer авторы черпали идеи и вдохновение из аналогичных проектов: npm для Node.js и Bundler для Ruby.

    Изначально он был спроектирован и разработан двумя людьми Nils Adermann и Jordi Boggiano, сейчас в проекте участвует более двадцати контрибьюторов, Проект написан на PHP 5.3, распространяется под лицензией MIT и доступен на github.

    Первые коммиты были сделаны апреле 2011 года и на сегодняшний день Composer находится в стадии «alpha3». Однако, он уже достаточно стабилен и используется многими популярными PHP проектами (например, Symfony 2). Список проектов использующих Composer можно посмотреть на сайте packagist.org — это официальный репозиторий Composer пакетов. Кстати, на недавней конференции Devconf 2012 разработчик фреймворка Yii в своём докладе упомянул, что Yii2 скорее всего тоже будет использовать Composer.

    В этой статье я кратко опишу основные возможности Composer и мы попробуем создать демонстрационный проект использующий Composer для загрузки необходимых библиотек. Все примеры будут доступны на github.com и bitbucket.org.

    Что умеет Composer?

    • Скачивать пакеты и их зависимости;
    • по умолчанию, пакеты скачиваются из официального репозитория packagist.org. Любой человек может свободно добавить туда свой пакет, чтобы сделать его установку максимально лёгкой и удобной для всего мира;
    • пакеты можно скачивать не только с packagist.org, но и из любого git, mercurial или svn репозитория;
    • при скачивании пакетов с github.com или bitbucket.org не требуется установленной системы контроля версий (git или hg), Composer работает через API этих сайтов;
    • git/hg/svn репозиторий с пакетом может находиться не только на одном из перечисленных выше сайтов, но в любом другом месте, например, в локальной сети предприятия или вообще на локальном жестком диске;
    • кроме того, устанавливаемая библиотека не обязательно должна быть оформлена в виде Composer-пакета, вы можете сделать установку из любого git/hg/svn репозитория произвольной структуры;
    • наконец, устанавливаемый пакет не обязательно должен быть git/hg/svn репозиторием, это может быть произвольный zip файл доступный по любому uri!
    • все пакеты устанавливаются в текущую директорию (откуда была выполнена команда install), это позволяет иметь несколько различных версий библиотек при работе над разными проектами параллельно;
    • команда update обновляет все установленные (или установит заново случайно удалённые) пакеты до свежих версий. А может и не обновлять версии до самых свежих, если создать специальный composer.lock файл — это позволяет зафиксировать комбинацию из стабильных версий всех используемых в проекте библиотек;
    • после установки пакетов автоматически генерируется autoload.php, с помощью которого можно подключить установленные библиотеки в коде вашего проекта. При подготовке Composer-пакета рекомендуется использовать PSR-0 — стандарт расположения и именования php файлов, чтобы autoload смог их легко найти. В любом случае, автор пакета может описать правила, по которым autoload будет искать файлы тех или иных классов или неймспейсов. Если вы устанавливаете библиотеку, которая не оформлена как Composer-пакет (например, произвольный git репозиторий с github), то задача описания правил autoload ложится на ваши плечи. Так что никакой магии с генерируемым autoload.php нет — он умеет загружать всё (даже библиотеки с набором функций вне классов), главное, чтобы были описаны правила (автором библиотеки или вами).
    Читайте также:  Установка бзс явы 638

    Рабочий пример: используем Composer в своём проекте

    Чтобы разобраться, как пользоваться Composer’ом, напишем маленький проектик на PHP: «Super Hello World». Поскольку мы не хотим изобретать велосипед и писать код «с нуля», возьмём готовые библиотеки и фреймворки.

    Мы будем использовать cледующие библиотеки:

    1. микрофреймворк Silex (доступен в виде Composer пакета на packagist.org),
    2. шаблонизатор Twig (доступен в виде Composer пакета на packagist.org),
    3. наш собственный логер посещений SuperLogger, который я оформил в виде Composer-пакета и опубликовал на github
    4. нашу старую, но любимую легаси-библиотеку superlib, которая состоит из мешанины классов без неймспейсов и функций без классов; библиотека опубликована на github, но не является оформленным Composer-пакетом

    Как мы это делали раньше: скачивали нужные нам фреймворки и библиотеки, думали куда их распаковать, писали в проекте кучу require (или require_once для надёжности).

    Как мы это сделаем теперь: используем Composer — он сам скачает все библиотеки и сгенерирует для нас autoload.php. Кроме того, если мы захотим показать «Super Hello World» коллегам, достаточно будет опубликовать код нашего проекта на github (или ещё где-нибудь), не включая всех требуемых библиотек в репозиторий и не готовя длинной инструкции по их установке. Нашим коллегам достаточно будет скачать (склонировать) «Super Hello World» и выполнить команду

    Composer распространяется в виде одного файла composer.phar (phar — это php-архив) — по сути это PHP скприт, который может принимать несколько команд (install, update, . ) и умеет скачивать и распаковывать библиотеки.

    Кстати, немного о синтаксисе запуска.
    Если вы работаете под Windows, то скорее всего вы будете писать что-то вроде

    Можно упростить себе жизнь, создав composer.bat и положив его в %PATH%.

    В Linux и OS X можно настроить на исполнение команду типа

    composer.json

    Итак, мы готовы написать наш Super Hello World проект. И я его только что написал: http://github.com/pqr/superhelloworld. Код состоит из одного index.php файла в директории web и шаблона layout.twig в директории views.

    Голова всему — это файл composer.json. Он должен быть в корне проекта, в нашем случае рядом с директориями web и view. В этом файле необходимо указать от каких библиотек зависит наш проект. Кроме того, если эти библиотеки не являются оформленными Composer-пакетами, то нужно указать некоторую дополнительную информацию об устанавливаемой библиотеке (например, описать правила автозагрузки классов и функций для autoload.php).

    composer.json, как вы догадались, имеет формат данных JSON. На вопрос «почему именно JSON?» разработчики Composer отвечают «Потому что. Просто примите это.«.

    Нам нужно описать один js-объект, в котором будут находиться все инструкции. Первая и самая главная инструкция: require.

    Подключаем пакеты с сайта packagist.org

    Здесь я описал зависимость проекта от PHP версии 5.3.0 и выше, от silex (микрофреймворк) и от twig (шаблонизатор). Silex и Twig доступны в виде Composer-пакетов на сайте packagist.org, поэтому дополнительных настроек не требуют. Замечу, что Silex в свою очередь зависит ещё от нескольких пакетов — все они будут скачены и установлены автоматически.

    Имя пакета состоит из двух частей разделёных косой чертой: названия поставщика (vendor name) и названия библиотеки. Названием поставщика зачастую является ник автора или имя компании. Иногда, название поставщика совпадает с именем самой библиотеки или фреймворка.

    Для каждого пакета обязательно нужно указать номер версии. Это может быть бранч в репозитории, например, «dev-master» — приставка dev сигнализирует, что это имя бранча, а сам бранч соответсвенно называется «master». Для mercurial репозитория аналогичная запись будет выглядеть как «dev-default». В качестве номера версии можно указать и более сложные правила, используя операторы сравнения. Кстати, если вы скачиваете код из удалённого репозитория, то Composer сканирует теги и имена веток в этом репозитории на предмет чего-то похожего на номера версий, например тег «v1.2.3» будет использован как указатель на версию 1.2.3.

    Читайте также:  Установка прожектора на ограждении
    Подключаем на собственный Compsoer-пакет

    Далее, подключим наш собственный пакет SuperLogger, который правильно оформлен, но опубликован не на packagist.org, а на github:

    Чтобы Composer знал где искать пакет «mycompany/superlogger», мы добавили массив repositories со ссылкой на соотвествующий github репозиторий. Обратим внимание, что записи в массиве repositories напрямую никак не связаны с блоком require — между пакетами и репозиториями не указано соответствие. На сколько я понял, Composer ищет все требуемые пакеты во всех указанных репозиториях (в т.ч. на сайте packagist.org) и скачивает найденные совпадения по каким-то внутренним приоритетам. Более глубоко я в этом моменте ещё не разбирался, поправьте меня, если кто-то знает детали.

    Подключаем произвольный git репозиторий

    Теперь подключим нашу легаси-библиотеку superlib, которая лежит на github, но не является оформленным Composer-пакетом, т.к. она очень старая.

    В массив repositories добавился объект, который целиком описывает пакет pqr/superlib. По сути, это то описание, которое должен был бы сделать автор библиотеки и положить его внутри своего репозитория. Но по условиям задачи, superlib не является оформленным Composer-пакетом, поэтому нам пришлось создать его описание в рамках Super Hello World проекта. Аналогичным образом можно подключить любую другую библиотеку, в т.ч. простой zip файл.

    Подключаем простой zip файл

    Например, вот как могло бы выглядеть описание зависимости от шаблонизатора Smarty, распространяемого в виде zip файла с исходниками в svn:

    Инстукция autoload

    Вернёмся к нашему проекту.
    Описывая «pqr/superlib», мы добавили инструкцию autoload. В ней указан файл timer.php, в котором будущий автозагрузчик будет искать классы и указали файл с функциями lib_functions.php — он будет принудительно подключаться в начале autoload.php.

    Итак, наш проект состоит из:

    • в корне лежит файл composer.json;
    • в корне находятся директории web и views;
    • внутри директории web лежит файл с «бизнес-логикой» нашего приложения: index.php;
    • внутри директории views лежит файл шаблона layout.twig;
    • дополнительно, в папку web я положил .htaccess (для apache) и web.config (для IIS 7.5) с правилами mod_rewrite/url rewriter — непосредсвенно к настройке Composer они отношения не имеют.

    Всё готово к запуску.

    Запускаем composer install

    Composer клонирует репозитории и распаковывает их на нужной версии в директорию vendor, которую он сам создаёт в корне проекта. После распаковки, в директории vendor мы найдём:

    • файл autoload.php
    • служебные директории .composer и composer
    • pimple — пакет, который подтянулся вместе с микрофреймворком Silex
    • silex — сам микрофреймворк, его мы явным образом затребовали при описании зависимостей
    • symfony — некоторые компоненты из Symfony 2, которые требуются для работы Silex
    • twig — шаблонизатор, который мы также явно запросили
    • mycompany — внутри этой директории будет находиться репозиторий superlogger скаченный с github
    • pqr — внутри этой директории будет находиться репозиторий superlib, также скаченный с github

    Остаётся только подключить autoload.php в начале файла web/index.php (require «../vendor/autoload.php») и все библиотеки и функции будут доступны!

    Как создать собственный Composer пакет?

    В этом проекте мы использовали Composer с точки зрения потребителя библиотек. А как самому создать Composer пакет, чтобы любой другой человек смог им воспользоваться?

    На самом деле, один из таких пакетов я создал, когда подготавливал примеры для этой статьи. В корне репозитория superlogger лежит файл composer.json похожей структуры, который описывает сам пакет и его зависимости (в случае с superlogger зависимостей нет). Другие примеры: репозитории silex и twig, которые скачались в папку vendor — все они имеют файл composer.json в корне — смотрите, изучайте!

    И, конечно, не забывайте про документацию на официальном сайте getcomposer.org/doc/.
    Эту тему я оставлю вам для самостоятельной проработки.

    Подведём итоги

    В этой статье я рассказал, что такое Composer, его историю и описал основные возможности. Мы с вами попробовали создать проект, который использует Composer для установки пакетов с сайта packagist.org и из наших собственных репозиториев.

    Самое время попробовать!

    1. Скачате Composer (getcomposer.org/download/)
    2. Скачате superhelloworld (git clone git://github.com/pqr/superhelloworld.git)
    3. Установите зависимости (cd superhelloworld && php composer.phar install)
    4. Изучите появившуюся папку vendor и сгенерированный autoload.php
    5. Используте Composer в своих проектах
    6. PROFIT.

    В своих рабочих проектах я использую систему контроля версий Mercurial. Этот пример вы также можете скачать и установить через Composer с сайта bitbucket.org: http://bitbucket.org/pqr/superhelloworld

    Внимание: к сожалению, при использовании Composer с Mercurial репозиториями на Windows машине я нашел один баг. Если вы устанавливаете зависимости в проекте, который находится на диске отличном от системного диска, то получите ошибку. Например, системный диск C:, а проект вы разворачиваете где-то в папке D:\someproject и ваш проект зависит от библиотек опубликованных в виде Mercurial репозиториев — Composer не сможет правильно их прочитать. Собираюсь в ближайшее время пофиксить этот баг и отправить pull request в официальный репозиторий Composer’а.

    источник