PHP编写器:如何加载和使用位于供应商/外部的插件?
有没有办法让Composer运行位于./src/中的安装程序插件 假设有可能从一开始,我们就不清楚应该如何做 如果没有,文档似乎也建议可以在COMPOSER_HOME中安装插件,但基本上没有说明如何实现这一点——任何指针都是最受欢迎的 澄清一下:问题不在于自动加载类,而在于运行composer安装或composer更新时让composer加载插件 我的项目设置:PHP编写器:如何加载和使用位于供应商/外部的插件?,php,symfony,composer-php,Php,Symfony,Composer Php,有没有办法让Composer运行位于./src/中的安装程序插件 假设有可能从一开始,我们就不清楚应该如何做 如果没有,文档似乎也建议可以在COMPOSER_HOME中安装插件,但基本上没有说明如何实现这一点——任何指针都是最受欢迎的 澄清一下:问题不在于自动加载类,而在于运行composer安装或composer更新时让composer加载插件 我的项目设置: ./app … ./src ./src/Hello ./src/Hello/HelloPlugin.php ./vendor … 插
./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自动加载用于加载项目中所需的包的所有名称空间,而不是在composer安装或composer更新挂钩期间加载插件
加载您自己的插件类的唯一方法是实现您自己的composer插件,composer插件类型的普通包,composer将使用它加载您的HelloPlugin类。否则,在composer安装钩子期间将不会加载插件类
我自己构建了一个composer插件,你可以在这里找到它,以供参考
如果您有更多问题/或帮助,请随时提问。您将psr-4和psr-0弄混了:@Jack:已修复并编辑了问题,但问题不是自动加载类…而是在运行composer安装或composer更新时让composer加载插件。我的理解是,你必须为你的插件创建一个单独的包,类型为:composer-plugin.Ya,它确实有效,我最终求助于它。我仍然好奇是否有可能,如果出现这样的情况,我不想或无法提供安装程序插件,因为它不是一个库。对此进行了更改,但在我运行composer安装或composer更新时仍然没有加载插件,我恐怕:-
{
"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": {
"psr-0": {
"Hello\\": "src/"
}
}