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

标签: php namespaces opcode opcache


【解决方案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

    【讨论】:

      猜你喜欢
      • 2018-07-19
      • 2023-03-30
      • 1970-01-01
      • 2016-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-23
      相关资源
      最近更新 更多