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

Posted

技术标签:

【中文标题】PHP (5.3+) 中的 \\(反斜杠)有啥作用?【英文标题】:What does a \ (backslash) do in PHP (5.3+)?PHP (5.3+) 中的 \(反斜杠)有什么作用? 【发布时间】:2011-06-14 23:18:30 【问题描述】:

\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);
    

【问题讨论】:

@mario 非常好的 *** 主题。感谢您的链接:) 我想这个问题应该关闭,但我不能自己关闭主题.. 这是一个重复的问题,但不是一个坏问题。但是您可以在标题中添加“反斜杠”,这样可以更轻松地在 Google 上搜索其他人。 重要的是要意识到,他们不再向信使开枪了。当你发现它是什么时,不要责怪我们 :) 哦不,我太迟了。 如果这是重复的,请链接重复的项目。 【参考方案1】:

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

函数开头之前的\ 代表Global Namespace。

放在那里可以确保调用的函数来自全局命名空间,即使当前命名空间中有同名的函数。

【讨论】:

如果我的服务器出现错误,删除它是否安全? PhpUnit 喜欢用它:) \var_export() if (\defined('PHPUNIT_COMPOSER_INSTALL')) ; 但是为什么FALSE前面有反斜杠呢?【参考方案2】:

命名空间

在 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"

【讨论】:

如果它导致代码运行得更快,想知道他们为什么不默认应用它?谁不喜欢表演? 可能是因为很长时间没有默认配置OPCache,甚至直到版本7才包含该功能。它也需要知识来设置和configure。【参考方案3】:

澄清潜在的混淆:

反斜杠暗示类继承

在下面,AnimalDogShepherd 不必是类,而只是 namespaces。意思是用于将名称组合到avoid naming collisions。

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

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

【讨论】:

【参考方案4】:

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

【讨论】:

以上是关于PHP (5.3+) 中的 \(反斜杠)有啥作用?的主要内容,如果未能解决你的问题,请参考以下文章

在 PHP 中导入类和命名空间:前导反斜杠有啥区别?

左斜杠和右斜杠分别有啥意义?

Linux中的正斜杆(/)和反斜杆(\)的作用

从 php mysql 中的 csv 文件的标题中删除反斜杠“\”

Django 中的 r'^admin/' , 请问中间的斜杠 / 是啥意思, 有啥作用?

sed命令反斜杠的转义