【发布时间】:2020-01-01 02:35:57
【问题描述】:
我通过 PSR-4 进行了自动加载设置,效果非常好。但是,我希望能够在此之上添加一个特定的类,我可以从应用程序的任何地方访问它。
这是我目前拥有的:
"autoload": {
"psr-4": {
"App\\": "app"
}
}
但是我想添加一个名为“Redis”的类,它位于 app/Lib/Redis.php 中,这样我就可以从任何控制器调用 Redis::method();无需添加“使用 App\Lib\Redis;”到每个文件的顶部。
这可能吗?
【问题讨论】:
-
即使这是可能的,它首先会破坏为类命名空间的整个目的。学会爱上
use语句,并依赖接口,而不是实现。 -
而您只想使用自动加载提供的功能来执行此操作?我的意思是,您是否还想在当前代码中添加一些代码(如新类)以实现您想要的?如果是,您应该知道这是可能的。阅读有关外观设计模式的信息,它为您提供了想法(甚至是解决方案)。对于一个真实世界的例子,看看 Laravel 源代码,看看它们是如何实现门面的,特别是它们是如何在没有任何命名空间的情况下访问它们的别名。
-
这个article 有点老了,但似乎很详细地解释了 Laravel 机制。