Skip to content

Latest commit

 

History

History
104 lines (83 loc) · 11.4 KB

CodeBuilding.md

File metadata and controls

104 lines (83 loc) · 11.4 KB

TYPO3 на базе Fluid: лучшие решения по программированию

Этот раздел документации посвящён решениям по автоматическому формированию кода. Существует несколько решений для автоматического формирования кода расширений TYPO3 на базе Fluid, работающих с учётом всех правил. Первое, и наиболее важное из таких решений по формированию кода - это EXT:builder, которое можно найти на Github: https://github.com/FluidTYPO3/builder.

EXT:builder предлагает несколько методов про проверке и построению кода.

Формирование расширений поставщиков (Provider Extension)

Запущенная из консоли эта 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 в каждый из корневых шаблонов страниц, где необходимо использовать шаблоны содержимого/страниц и начать создавать собственныеили настраивать преднастроенные шаблоны.

Создание модульного (unit) и функционального (functional) тестирования

Как только закончите (если это вообще возможно) со своими шаблонами и связанными с ними классами - контроллерами, проекторами (ViewHelpers) и тому подобным, EXT:builder позволит сформировать модульные (unit) и функциональные (functional) тесты для автоматического тестирования кода. Команды для формирования модульных тестов для проекторов (ViewHelper, при их создании), и других тестов запланированы (например, базовые тесты проверки шаблона, так phpunit сможет отлавливать все синтаксические ошибки и неверно используемые аргументы).

В EXT:builder имеются команды для проверки шаблонов, сообщении о любых неверных аргументах или очевидных проблемах в синтаксисе (которые сложно определить, например, если изменяется название созданного проектора или аргумента, а в шаблоне используется старые названия), а также определение проблем в коде PHP. Запланированы и другие функции анализа, например, определение проблем в аннотациях, используемых к примеру контроллерах, проверка их на предмет существования требуемых типов классов, и многое другое.

Использование Travis-CI

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.