cakephp3 在方法中加载库

cakephp3 load library inside a method

刚刚将系统迁移到新的cake3。 但是现在由于命名空间,很难在方法中动态加载库。

我有一个控制器

在 :

require_once(APP . 'Lib' . DS  . 'Channel' . DS  . 'Channel1.php');
require_once(APP . 'Lib' . DS  . 'Channel' . DS  . 'Channel2.php');
require_once(APP . 'Lib' . DS  . 'Channel' . DS  . 'Channel3.php');
require_once(APP . 'Lib' . DS  . 'Channel' . DS  . 'Channel4.php');
use Channel\Channel1;
use Channel\Channel2;
use Channel\Channel3;

但是我不想加载所有库,除非我需要它们。有什么好的解决方案建议吗?

如果您将文件放在 src/Channel 而不是 src/Lib/Channel 中,那么当您这样做时自动加载器会自动找到您的文件

use App\Channel\Channel1;

这将要求您将 class 的命名空间设置为 App\Channel

您还可以告诉作曲家如何自动加载您的自定义命名空间。在 composer .json 的自动加载部分,在 psr-4 下,执行:

"Channel\" : "./src/Lib/Channel"

最后执行composer dumpautoload