【发布时间】:2014-02-13 07:29:46
【问题描述】:
有没有办法让 Composer 运行位于 ./src/ 的安装程序插件?
relevant docs 不清楚应该如何完成,假设可以开始。
如果没有,文档似乎还建议可以在 COMPOSER_HOME 中安装插件,但基本上没有说明如何可以做到这一点 - 任何指针都会受到欢迎。
澄清一下:问题不在于自动加载类,而是让 composer 在运行 composer install 或 composer update 时加载插件。
我的项目设置:
./app
…
./src
./src/Hello
./src/Hello/HelloPlugin.php
./vendor
…
插件文件:
<?php # ./src/Hello/Hello.php
namespace Hello;
use Composer\Composer;
use Composer\IO\IOInterface;
use Composer\Plugin\PluginInterface;
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"]
}
}
【问题讨论】:
-
你混淆了 psr-4 和 psr-0 :)
-
@Jack:已修复并已编辑问题,但问题不在于自动加载类……而是让 composer 在运行
composer install或composer update时加载插件。 -
我的理解是你必须使用
"type": "composer-plugin"为你的插件创建一个单独的包。 -
是的,出售它确实有效,我最终采用了它。我仍然很想知道这是否可能,如果出现我不想(或不能)供应安装程序插件的情况,因为例如这不是图书馆。
标签: php symfony composer-php