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


172

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

1
@mario非常好的stackoverflow主题。感谢您的链接:)
Alfred

我想这个问题应该解决,但我自己不能关闭主题。.–
Alfred

5
这是重复的,但不是一个坏问题。但是您可以在标题中添加“反斜杠”,这样可以更轻松地为其他人搜索Google。
mario

1
重要的是要意识到,他们不再射击信使了。当您发现问题所在时,请不要怪我们:)哦,不,我太迟了。
蒂姆·波斯特

Answers:


247

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

\函数开始之前的A 表示全局命名空间

将其放在此处将确保所调用的函数来自全局名称空间,即使当前名称空间中存在具有相同名称的功能。


1
谢谢!您是使用Google找到它还是已经知道了:P?
阿尔弗雷德

6
通过巧妙的谷歌搜索找到它。我还没有机会使用PHP 5.3,并且对答案很感兴趣。花了几分钟,但我找到了。
艾伦·盖林斯

1
首先,php backslash这使我撰写了一篇有关选择它作为名称空间分隔符的影响的文章,然后php namespace获得了文档。
艾伦·盖林斯

20
谷歌搜索“函数前的PHP反斜杠”将我带到这里。
igneosaur 2015年

4
@igneosaur谷歌搜索“我是一个前端开发人员,PHP令人恐惧”将我带到这里
Telarian

23

命名空间

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

请参阅有关的官方文档 命名空间的

操作缓存

此外,在PHP 7.0以上版本的一些功能被替换操作码OPCache,这使得这些特定功能的运行速度快了很多。但是,这仅在将函数放置在根名称空间中时有效。看到这个讨论这个话题。因此,除了命名空间外,\间接影响代码优化。

以下本机功能可从此效果中受益:

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

22

为了澄清潜在的混乱:

反斜杠并不意味着类继承

在下文中,AnimalDogShepherd不必是类,但简单地命名空间。含义用于将名称分组在一起以避免命名冲突的东西

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

在全球范围内宣布了领先\手段Animal


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.