Search
Write a publication
Pull to refresh
1
0

User

Send message

Все супер! а я бы еще добавил к статьи просто упоминание, когда это не обязательно, чтоб разжевать уже до конца:)

- В глобальном пространстве имен: Если файл не содержит 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) - могут предупредить о потенциальных конфликтах имен или неоднозначных вызовах.

Information

Rating
Does not participate
Registered
Activity

Specialization

Fullstack Developer, DevOps
Senior
From 200,000 ₽
PHP
Nginx
SQL
Linux
MySQL
Symfony
Laravel
REST
Git
Delphi