有没有办法让作曲家运行位于./src/
的安装程序插件?
相关文档对于应该如何完成它相当不清楚,假设它可以开始。
如果没有,文档似乎也建议可以在COMPOSER_HOME中安装插件,但基本上没有说明如何做到这一点——任何指针都是最受欢迎的。
澄清一下:问题不在于自动加载类,而在于使作曲家在运行composer install
或composer update
时加载插件。
我的项目设置:
./app
…
./src
./src/Hello
./src/Hello/HelloPlugin.php
./vendor
…
插件文件:
<?php # ./src/Hello/Hello.php
namespace Hello;
use ComposerComposer;
use ComposerIOIOInterface;
use ComposerPluginPluginInterface;
class HelloPlugin implements PluginInterface
{
public function activate(Composer $composer, IOInterface $io);
{
echo "Hello World!".PHP_EOL;
}
} # END class
项目composer.json
文件的相关行:
{
"name": "hello/world",
"type": "project",
"autoload": {
"psr-0": {
"Hello\": "src/"
}
},
"require": {
"composer/installers": "~1.0",
"composer-plugin-api": "~1.0"
},
"extra": {
"class": ["Hello\HelloPlugin"]
}
}
作曲家autoload
用于加载您在项目中require
的所有包namespaces
,它不打算在composer install
或composer update
钩子期间加载插件。
加载自己的插件类的唯一方法是实现自己的作曲家插件,一个 composer-plugin
类型的普通包,作曲家将使用它来加载您的HelloPlugin
类。 否则,在composer install
钩子期间将不会加载您的插件类。
我自己建了一个composer-plugin
,在这里你可以找到它 https://github.com/mnsami/composer-custom-directory-installer,供参考。
如果您有更多问题/或帮助,请随时提出。
"autoload": {
"psr-0": {
"Hello\": "src/"
}
}
https://getcomposer.org/doc/01-basic-usage.md#autoloading