【发布时间】:2015-06-28 21:18:20
【问题描述】:
我正在制作一个 CakePHP3 插件,并且正在使用我编写的使用 PSR-4 自动加载的库。如果我需要应用程序的 composer.json 中的库,它会正确自动加载,我可以在我的应用程序中的任何地方使用它,包括插件。当我尝试通过我的插件的 composer.json 要求它时,它安装得很好,并且 composer 没有给出任何错误,但它似乎没有自动加载。当我转到由使用该库的插件控制的页面时,我收到找不到该类的错误。
我做错了吗?我在我的插件文件夹中检查了vendor/composer/autoload_psr4.php,我的类在那个文件中。我还在应用程序目录和插件目录中运行了composer dump-autoload,但没有帮助。
我使用 cake bake plugin MyPlugin 烘焙了插件,然后编辑了插件 composer.json 的 require 部分以包含我的库。然后我运行 composer update 并将库安装到 plugins/MyPlugin/vendor/mylibrary 没有错误。
【问题讨论】:
-
你是如何安装插件的?例如,您是否将插件放在了 packagegist 中?
-
插件不在packagist中,但我试图在插件中需要的库在packagist中
-
我现在没有时间获得完整的答案,但最好的选择是将插件放入 packagegist 或使用 vcs composer install。否则作曲家将不知道在哪里可以找到您的代码以及如何计算其依赖关系
-
@JoséLorenzo 我将烘焙插件移到了它自己的 git 存储库中,并将其作为 vcs 存储库包含在我应用的 composer.json 中。它已安装并且我的库是自动加载的,我可以在应用程序中使用它,但是插件安装在供应商目录而不是插件目录中,因此我的插件不起作用。你知道怎么解决吗?
-
@JoséLorenzo nvm 现在使用供应商目录中的插件看起来可以正常工作。它在
vendor/cakephp-plugins.php中被引用,我需要做的就是在config/bootstrap.php中加载插件
标签: cakephp composer-php autoload cakephp-3.0 psr-4