【问题标题】:CakePHP3 Plugin autoload classCakePHP3 插件自动加载类
【发布时间】: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


【解决方案1】:

我将我的烘焙插件移动到它自己的 git 存储库中,然后将该存储库添加到我的应用程序的 composer.json 文件中,并将我的插件添加为要求。然后我在我的应用程序目录中运行composer update,并将我的插件及其依赖项安装到供应商目录中。然后我只需要在config/bootstrap.php 中加载插件,一切正常!

【讨论】:

    【解决方案2】:

    生成文件 vendor/cakephp-plugins.php 时似乎有问题。不知何故,您自己安装的 CakePHP 插件不包含在此文件中。自己添加插件时,一切正常,但每次加载 composer update/install 时,都会重新生成此文件,因此您将丢失所做的更改。

    我可以看到插件加载在 vendor/composer/installed.json 中,但问题似乎是它们的类型是“库”,它应该是 cakephp-plugin。我不知道需要更改什么,所以 CakePHP 将其视为自己的插件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-09
      • 1970-01-01
      • 1970-01-01
      • 2015-11-24
      • 1970-01-01
      • 2017-01-01
      • 2017-05-06
      • 1970-01-01
      相关资源
      最近更新 更多