PHP(5.3+)中的\(反斜杠)有什么作用?

时间:2011-01-25 04:34:05

标签: php namespaces opcode opcache

\在PHP中做了什么?

例如,CSRF4PHP\FALSE\session_id\Exception

public function __construct($timeout=300, $acceptGet=\FALSE){
    $this->timeout = $timeout;
    if (\session_id()) {
        $this->acceptGet = (bool) $acceptGet;
    } else {
        throw new \Exception('Could not find session id', 1);
    }
}

4 个答案:

答案 0 :(得分:192)

\(反斜杠)是PHP 5.3中的命名空间分隔符。

函数开头前的\代表Global Namespace

将它放在那里将确保被调用的函数来自全局命名空间,即使当前命名空间中存在同名的函数。

答案 1 :(得分:18)

澄清潜在的混淆:

反斜杠暗示类继承

在下文中,AnimalDogShepherd不必是课程,而只是namespaces。含义用于将名称组合在一起的内容avoid naming collisions

$myDog = new \Animal\Dog\Shepherd\GermanShepherd();

前导\表示Animal已在全球范围内声明。

答案 2 :(得分:11)

命名空间

在PHP 5.3+中,反斜杠\符号用于命名空间。它是表示名称空间的开始符号,并且还用作子名称空间名称之间的分隔符。

请参阅有关的官方文档 namespacing

Opcache

另外,在PHP 7.0+中, OPCache 用操作码替换了某些功能,这使这些特定功能的运行速度大大提高。但是,这仅在将函数放置在根名称空间中时有效。有关此主题,请参见此 discussion 。因此,除了命名间隔之外,\还会间接影响代码的优化。

以下本地函数受益于此效果:

"array_slice"
"assert"
"boolval"
"call_user_func"
"call_user_func_array"
"chr"
"count"
"defined"
"doubleval"
"floatval"
"func_get_args"
"func_num_args"
"get_called_class"
"get_class"
"gettype"
"in_array"
"intval"
"is_array"
"is_bool"
"is_double"
"is_float"
"is_int"
"is_integer"
"is_long"
"is_null"
"is_object"
"is_real"
"is_resource"
"is_string"
"ord"
"strlen"
"strval"

答案 3 :(得分:8)

{5.3}在PHP 5.3中用于命名空间。有关命名空间和PHP的更多信息,请参阅http://www.php.net/manual/en/language.namespaces.rationale.php