Все супер! а я бы еще добавил к статьи просто упоминание, когда это не обязательно, чтоб разжевать уже до конца:)
- В глобальном пространстве имен: Если файл не содержит namespace ...; в начале, то все функции и константы по умолчанию ищутся в глобальном пространстве. strlen() и \strlen() будут работать одинаково.
- Для функций, импортированных через use function (PHP 5.6+):
namespace MyApp;
use function \json_encode;
function doSomething() {
json_encode(...); // Вызов импортированной глобальной функции без \
}
namespace MyApp\Utils;
function json_encode($data) {
// ... кастомная реализация (плохая практика для такого имени, но технически возможно и даже попадался на такое) ...
}
function process() {
$data = ['a' => 1];
// Вызов КАСТОМНОЙ функции json_encode из текущего пространства MyApp\Utils:
$resultCustom = json_encode($data);
// Вызов ВСТРОЕННОЙ PHP функции json_encode (с помощью `\`):
$resultBuiltin = \json_encode($data);
// ... разные результаты ...
}
А самое главное Статические анализаторы (Psalm, PHPStan) - могут предупредить о потенциальных конфликтах имен или неоднозначных вызовах.
Все супер! а я бы еще добавил к статьи просто упоминание, когда это не обязательно, чтоб разжевать уже до конца:)
- В глобальном пространстве имен: Если файл не содержит
namespace ...;
в начале, то все функции и константы по умолчанию ищутся в глобальном пространстве.strlen()
и\strlen()
будут работать одинаково.- Для функций, импортированных через
use function
(PHP 5.6+):А самое главное Статические анализаторы (Psalm, PHPStan) - могут предупредить о потенциальных конфликтах имен или неоднозначных вызовах.