为什么可以从所有命名空间访问laravel帮助器?

时间:2018-10-28 17:43:15

标签: laravel composer-php helper autoloader

到目前为止,我看到有两个文件的功能已通过composer autoloader加载。

.collect(...)

然后在自动加载器中

 "autoload": {
         "files": [
             "src/Illuminate/Foundation/helpers.php",
             "src/Illuminate/Support/helpers.php"
        ],

但是实际上,它只需要此文件,并且所有功能仅属于全局名称空间。您能解释一下为什么所有功能最终都可以从所有名称空间访问吗?

2 个答案:

答案 0 :(得分:1)

这就是为什么助手可以在所有命名空间中工作的原因:

  

对于函数和常量,PHP将回退到全局函数   或常量(如果不存在命名空间的函数或常量)。

PHP docs

答案 1 :(得分:0)

这是因为作曲家psr-4自动加载功能。 在作曲家自动加载的文件部分中,您正在定义应自动加载的文件。因此,让我们考虑一下其中一个具有“计算”功能的文件。现在,当您调用calculate composer时,它将知道在哪个文件中找到该函数。如果要从自动加载中删除文件,则函数调用将停止工作。