为什么在php中添加名称空间到内部函数?

时间:2018-06-06 12:53:41

标签: php symfony namespaces

在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 :(得分:2)

这很可能是为了获得PHP 7.0中某些函数引入的性能改进,其中一些函数被操作码替换。为了获得这些改进,这些函数必须由根命名空间引用。

PHP-CS-Fixer上的

This issue GitHub存储库包含一个注释,其中包含使用此功能的函数列表。 file_exists没有以这种方式得到改进,因此根名称空间引用它不会提高性能。对于Symfony GitHub存储库,PR也多次引用此问题。

Here is a link到PHP源代码,您还可以在其中找到具有此行为的函数列表。