Этот раздел документации посвящён решениям по автоматическому формированию кода. Существует несколько решений для автоматического формирования кода расширений TYPO3 на базе Fluid, работающих с учётом всех правил. Первое, и наиболее важное из таких решений по формированию кода - это EXT:builder, которое можно найти на Github: https://github.com/FluidTYPO3/builder.
EXT:builder предлагает несколько методов про проверке и построению кода.
Запущенная из консоли эта CLI команда, доступная при установленном EXT:builder, создаст каркас расширения с базовым набором файлов и настроек, и все - лишь одной простой командой (из корня сайта TYPO3):
./typo3/cli_dispatch.phpsh extbase builder:providerextension <arguments>
Команда поддерживает большой набор аргументов для настройки формируемого расширения относительно его предназначения и создания.
ОБЯЗАТЕЛЬНЫЕ АРГУМЕНТЫ:
--extension-key Ключ формируемого расширения, которого не должно быть в папке typo3conf/ext.
--author Автор расширения, в формате "Имя Фамилия <name@example.com>" с необязательным названием
компании, при этом форма будет следующей: "Имя Фамилия <name@example.com>, Компания"
ВОЗМОЖНЫЕ АРГУМЕНТЫ:
--title Название формируемого расширения, по умолчанию "Provider extension for $enabledFeaturesList"
--description Описание формируемого расширения, по умолчанию "Provider extension for $enabledFeaturesList"
--use-vhs Если TRUE, добавляется зависимость от расширения VHS, что рекомендуется, включено по умолчанию
--pages Если TRUE, создаются основные файлы, применительно к шаблонам Fluid Page
--content Если TRUE, создаются основные файлы, применительно к шаблонам Fluid Content
--backend Если TRUE, создаются основные файлы, применительно к модулям Fluid Backend
--controllers Если TRUE, формируются контроллеры для всех указанных функций. При включении $backend,
контроллер создается не взирая на этот аргумент.
--minimum-version Минимально требуемая для этого расширения версия ядра, по умолчанию - последняя LTS (на данный момент 4.5)
--dry Если TRUE, происходит холостой запуск - никакие файлы не создаются,
но дается отчет по возможности создания файлов
--verbose Если FALSE, не выводится множество сообщений (в STDOUT)
--git Если TRUE, вновь создаваемая директория расширения инициализируется как репозиторий Git и commits
для всех файлов. Затем возможно "git add remote origin <URL>" и "git push origin master -u"
для возвращения (push) начального состояния
--travis Если TRUE, формирутся сценарий построения Travis-CI использующий стандарты кодирования и анализа кода
TYPO3 на базе Fluid coding standards analysis and code
для автоматического тестирования в Travis-CI
В зависимости от используемых параметров, будут созданы файлы шаблонов для EXT:fluidcontent,
EXT:fluidpages и/или EXT:fluidbackend с базовым набором настроек, файлов, необходимых для всех подобных расширений. Чтобы
проверить работу, укажите --dry 1
, это значит, что файлы/папки не будут созданы, но будет проверена возможность их создания.
Возможно даже инициализировать и провести изначальный commit всех файлов в виде git репозитория (требуется доступ к консольной
CLI команде git
для текущего пользователя).
Такая команда может выглядеть так:
./typo3/cli_dispatch.phpsh extbase builder:providerextension test "Claus Due <claus@wildside.dk>" \
--pages 1 --content 1 --controllers 1 --git 1 --travis 1 --use-vhs 1
Так будет сформировано расширение с ключом test
автора Claus Due
с email claus@wildside.dk
,
включающее шаблоны page и content, наряду с классами контроллеров для обоих, сценарий построения Travis-CI для всего расширения.
И наконец будет создан репозиторий git в папке расширения с изначальным commit всех файлов.
Сформированное расширение затем можно запросто установить, также из командной строки:
./typo3/cli_dispatch.phpsh extbase builder:install test
Так можно просто установить расширение с ключом "test" (обратите внимание: эта возможость работает лишь для сайтов на 6.0+ TYPO3). Все, что остается сделать - загрузить статический TypoScript в каждый из корневых шаблонов страниц, где необходимо использовать шаблоны содержимого/страниц и начать создавать собственныеили настраивать преднастроенные шаблоны.
Как только закончите (если это вообще возможно) со своими шаблонами и связанными с ними классами - контроллерами, проекторами (ViewHelpers) и тому подобным, EXT:builder позволит сформировать модульные (unit) и функциональные (functional) тесты для автоматического тестирования кода. Команды для формирования модульных тестов для проекторов (ViewHelper, при их создании), и других тестов запланированы (например, базовые тесты проверки шаблона, так phpunit сможет отлавливать все синтаксические ошибки и неверно используемые аргументы).
В EXT:builder имеются команды для проверки шаблонов, сообщении о любых неверных аргументах или очевидных проблемах в синтаксисе (которые сложно определить, например, если изменяется название созданного проектора или аргумента, а в шаблоне используется старые названия), а также определение проблем в коде PHP. Запланированы и другие функции анализа, например, определение проблем в аннотациях, используемых к примеру контроллерах, проверка их на предмет существования требуемых типов классов, и многое другое.
Travis CI сервис, который возможно свободно использовать для OpenSource проектов, он позволяет автоматически "строить" свой код при помощи настраиваемых сценариев. EXT:builder может создавать настройки, учитывающие стандарты TYPO3 на базе Fluid и инспекцию кода. При построении (и активации в Travis-CI путём подписания подключения репозитория к списку своих репозитриев), сценарий Travis-CI автоматически установит зависимости, требуемые расширением. EXT:builder затем используется для проведения серии тестов и наконец вызывается phpunit для проведения любых модульных (unit) тестов для расширения (в том числе и тестов, созданных самим EXT:builder). Как только в основную ветвь (master branch) будут посланы запросы pull или push, Travis выполнит сценарий построения и отчитается о любой появившейся проблеме владельцу репозитория. Пример постройки Travis; для самого EXT:builder и сценарий, настраивающий такую постройку.
Поскольку даже наиболее простые сценарии автоматизации Travis-CI, написанные EXT:builder, будут проводить множество тестов над синтаксисом как PHP, так и Fluid, настоятельно советуем использовать Travis-CI. Конечно, можно проводить тестирование по мере необходимости, просто выполнив соответствующую команду CLI из списка команд EXT:builder.