CakePHP3 插件自动加载 class

CakePHP3 Plugin autoload class

我正在制作一个 CakePHP3 插件,我正在使用我编写的一个使用 PSR-4 自动加载的库。如果我在应用程序的 composer.json 中需要该库,它会正确自动加载,我可以在我的应用程序中的任何地方使用它,包括插件。当我尝试通过我的插件的 composer.json 要求它时,它安装正常并且作曲家没有给出任何错误,但它似乎没有自动加载。当我转到由使用该库的插件控制的页面时,我收到 class 未找到的错误。

我是不是做错了什么?我检查了我的插件文件夹中的 vendor/composer/autoload_psr4.php,我的 class 在该文件中。我也在应用程序目录和插件目录中 运行 composer dump-autoload 但它没有帮助。

我用 cake bake plugin MyPlugin 烘焙了插件,然后编辑了插件 composer.json 的要求部分以包含我的库。然后我 运行 composer update 并将库安装到 plugins/MyPlugin/vendor/mylibrary 没有错误。

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

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

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