在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项目都会出现这种差异。
答案 0 :(得分:2)
这很可能是为了获得PHP 7.0中某些函数引入的性能改进,其中一些函数被操作码替换。为了获得这些改进,这些函数必须由根命名空间引用。
PHP-CS-Fixer上的 This issue GitHub存储库包含一个注释,其中包含使用此功能的函数列表。 file_exists
没有以这种方式得到改进,因此根名称空间引用它不会提高性能。对于Symfony GitHub存储库,PR也多次引用此问题。
Here is a link到PHP源代码,您还可以在其中找到具有此行为的函数列表。