Почему помощники laravel доступны из всех пространств имен? - PullRequest
0 голосов
/ 28 октября 2018

Пока я вижу, что есть два файла с функциями, которые загружаются с автозагрузчиком композитора.

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

А потом в автозагрузчике:

function composerRequire69685de7f834ebe45f1e02416f8679f0($fileIdentifier, $file)
{
    if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
        require $file;

        $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
    }
}

Но на самом деле он просто требует этот файл, и все функции поступают только в глобальное пространство имен. Можете ли вы объяснить мне, почему в конечном итоге все эти функции доступны из всех пространств имен?

Ответы [ 2 ]

0 голосов
/ 28 октября 2018

Вот почему помощники работают во всех пространствах имен:

Для функций и констант PHP вернется к глобальным функциям или константам, если функция или константа в пространстве имен не существует.

PHP документы

0 голосов
/ 28 октября 2018

Это из-за функции автозагрузки композиторов psr-4.в разделе файлов автозагрузки композиторов вы определяете файлы, которые должны загружаться автоматически.Итак, давайте рассмотрим в одном из файлов у вас функцию под названием «Рассчитать».Когда вы сейчас вызываете Calculate, композитор знает, в каких файлах он находит функцию.Если вы удалите файлы из автозагрузки, вызов функции перестанет работать.

...