Зачем добавлять пространство имен во внутреннюю функцию в php? - PullRequest
0 голосов
/ 06 июня 2018

В Symfony некоторые функции имеют корневое пространство имен, а некоторые функции нет, почему?

Например:

// code from symfony 
if (file_exists($cache->getPath()) && \is_object($this->container = include $cache->getPath())) {
     $this->container->set('kernel', $this);
     $oldContainer = $this->container;
     $fresh = true;
 }

file_exists не имеет пространства имен, но \is_object делает.

Я заметил, что такого рода различия происходят во всем проекте Symfony.

1 Ответ

0 голосов
/ 08 июня 2018

Скорее всего, это может быть связано с улучшением производительности, которое было введено для некоторых функций в PHP 7.0, где некоторые функции были заменены кодами операций.Чтобы получить эти улучшения, на эти функции должна ссылаться корневая область имен.

Эта проблема в репозитории GitHub PHP-CS-Fixer содержит комментарий со списком функций, которыеиспользовать этот.file_exists не был улучшен таким образом, поэтому он не приведет к улучшению производительности для ссылки на него корневым пространством имен.Эта проблема также неоднократно упоминалась PR для репозитория Symfony GitHub.

Вот ссылка на исходный код PHP, где вы также можете найти список функций с таким поведением.

...