Сводка #Иногда может потребоваться, чтобы пакет требовал дополнительных действий во время установки, таких как установка пакетов за пределами стандартной библиотеки В этих случаях вы могли бы рассмотреть создание Custom Installer для обработки вашей конкретной логики. Вызов пользовательского установщика #Предположим, что в вашем проекте уже есть пользовательский установщик для определенных модулей, а затем вызов этого установщика - это вопрос определения правильного типа в файле пакета. Инструкции по созданию настраиваемых установщиков см. в следующей главе. Каждый пользовательский установщик определяет строку типа, которую он распознает. После распознавания он полностью переопределит установщик по умолчанию и применит только свою собственную логику. Пример использования: phpDocumentor показывает шаблоны, которые необходимо установить за пределами структуры папок default/vendor. В качестве такового они выбрали тип
Примером composer.json такого пакета шаблонов будет:
{
"name": "phpdocumentor/template-responsive",
"type": "phpdocumentor-template",
"require": {
"phpdocumentor/template-installer-plugin": "*"
}
}
ВАЖНО: чтобы убедиться, что программа установки шаблонов присутствует во время установки пакета шаблонов, в пакетах шаблонов должен быть установлен плагин. Создание установщика #Пользовательский установщик определяется как класс, который реализует Таким образом, базовый Installer Plugin будет состоять из трех файлов:
composer.json #Файл пакета такой же, как и любой другой файл пакета, но со следующими требованиями:
Пример:
{
"name": "phpdocumentor/template-installer-plugin",
"type": "composer-plugin",
"license": "MIT",
"autoload": {
"psr-0": {"phpDocumentor\\Composer": "src/"}
},
"extra": {
"class": "phpDocumentor\\Composer\\TemplateInstallerPlugin"
},
"require": {
"composer-plugin-api": "^1.0"
},
"require-dev": {
"composer/composer": "^1.3"
}
}
В приведенном выше примере есть сам Composer в своем require-dev, который позволяет вам использовать классы Composer в вашем тестовом наборе, например. Класс плагина #Класс, определяющий плагин Composer, должен реализовывать Класс может быть размещен в любом месте и иметь любое имя, если оно самозагружаемо и соответствует элементу Пример: getInstallationManager()->addInstaller($installer); } } Пользовательский класс установщика #Класс, который выполняет пользовательскую установку, должен реализовать ПРИМЕЧАНИЕ. Внимательно выберите название своего типа, рекомендуется придерживаться формата: Класс InstallerInterface определяет следующие методы (см. Источник точной подписи):
Пример:
getPrettyName(), 0, 23);
if ('phpdocumentor/template-' !== $prefix) {
throw new \InvalidArgumentException(
'Unable to install template, phpdocumentor templates '
.'should always start their package name with '
.'"phpdocumentor/template-"'
);
}
return 'data/templates/'.substr($package->getPrettyName(), 23);
}
/**
* {@inheritDoc}
*/
public function supports($packageType)
{
return 'phpdocumentor-template' === $packageType;
}
}
Этот пример демонстрирует, что довольно просто расширить класс Вместо установки в |