首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP7在所有标准php函数php-cs-fixer规则中添加一个斜杠。

PHP7在所有标准php函数php-cs-fixer规则中添加一个斜杠。
EN

Stack Overflow用户
提问于 2019-03-29 14:32:16
回答 6查看 2.9K关注 0票数 8

继承了一个PHP7项目。前面的开发人员在所有标准PHP函数中添加了一个斜杠,即使是\true。有什么理由这么做吗?

下面是一些例子:

代码语言:javascript
复制
\array_push($tags, 'master');

if ($result === \true) {}

$year = \date('Y');

什么是php补丁规则来切换这个选项?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2019-03-29 14:42:49

正如其他答案所指出的,在全局函数和常量中添加\前缀或内置函数和常量,可以确保它们不会被当前命名空间中的声明覆盖。具有相同效果的另一种方法是在文件的顶部添加use function foo;use constant foo;行。

在大多数情况下,这是不必要的,因为PHP将返回到不存在命名空间-本地版本的全局/内置版本,但也有一些情况是,如果PHP事先知道正在使用的是什么(请参阅PHP中的第3048期第2739期 ),则会有一些性能优势。

在PHP中控制这一点的选项是native_function_invocation

票数 7
EN

Stack Overflow用户

发布于 2019-03-29 14:34:13

可以使用斜杠来确保使用的是本机PHP函数或常量,而不是项目名称空间中同名的函数/常量。

代码语言:javascript
复制
namespace test;

function array_push($arr, $str) {
    return $str;
 }

$arr = [];

var_dump(array_push($arr, 'Hello World'));   // array_push defined in namespace test
var_dump(\array_push($arr, 'Hello World'));  // native array_push function

演示: https://ideone.com/3xoFhm

另一个可以使用\斜杠的例子是加速解析(如PHP文档中提到的)。PHP不需要使用自动加载程序来查找函数或常量声明。因此,使用前面的\,PHP可以使用本机函数而不需要额外的检查。

您可以在PHP和native_function_invocation (用于函数)和native_constant_invocation (用于常量)选项上切换此选项。您可以在下面的页面中找到对这些选项的解释:https://github.com/FriendsOfPHP/PHP-CS-Fixer

票数 8
EN

Stack Overflow用户

发布于 2019-03-29 14:43:24

这也可能是因为业绩。直接从根命名空间调用它时,性能要快得多。

代码语言:javascript
复制
<?php

namespace App;

class Test 
{
    public function test()
    {
        $first = microtime(true);
        for ($i = 0; $i <= 5000; $i++) {
            echo number_format($i).PHP_EOL;
        }
        echo microtime(true) - $first;
    }
    
    public function testNative()
    {
        $first = microtime(true);
        for ($i = 0; $i <= 5000; $i++) {
             echo \number_format($i).PHP_EOL;
        }
        echo microtime(true) - $first;
    }
}



$t = new Test();
$t->test();
//0.03601598739624

$t->testNative();
//0.025378942489624
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55419673

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档