Это нормальная практика, что Laravel определяет глобальные функции без пространств имен? - PullRequest
0 голосов
/ 18 января 2020

Я начал изучать Laravel 6. В /vendor/laravel/framework/src/Illuminate/Foundation/helpers.php есть некоторые функции даже без пространства имен! Так что он занимает глобальное пространство имен. Это нормально?

1 Ответ

2 голосов
/ 19 января 2020

Да, это нормально и предназначено.

Ваш файл helpers.php следует использовать для глобальных функций, которые просто не принадлежат ни к какой другой категории, например, для работы со строками, простых вычислений и т. Д. c.

Если вы заметили шаблон в своих функциях, вы, вероятно, захотите разделить его на собственный класс.

Поэтому, чтобы избежать некоторых ошибок, все вспомогательные функции упакованы следующим образом:

if(!function_exists('my_helper_func')) {
    function my_helper_func($param) {
        return $param;
    }
}

Однако вы правы в том, что это может вступить в противоречие с другим кодом, если они применяют один и тот же материал. Вот почему Laravel недавно переместил все помощники строк и массивов в пакет composer, что теперь означает, что глобальная функция, такая как starts_with(), должна вызываться как \Illuminate\Suppor\Str::startsWith().

...