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
刚刚将系统迁移到新的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