web-dev-qa-db-ja.com

PHP(5.3+))で\(バックスラッシュ)は何をしますか?

\ PHPで行いますか?

たとえば、 CSRF4PHP has \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);
    }
}
148
Alfred

\(バックスラッシュ)は、PHP 5.3。

\は、関数の先頭の前に Global Namespace を表します。

そこに置くと、現在の名前空間に同じ名前の関数が存在する場合でも、呼び出される関数がグローバル名前空間からのものであることが保証されます。

209
Alan Geleynse

潜在的な混乱を明確にするには:

バックスラッシュはしないことを意味するクラスの継承

以下では、AnimalDogShepherdはクラスである必要はなく、単に namespaces です。 名前の衝突を避ける に名前をグループ化するために使用される意味。

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

先頭の\は、Animalがグローバルスコープで宣言されたことを意味します。

20
Nelu

名前空間

In PHP 5.3+バックスラッシュ\シンボルは名前空間で使用されます。これは、名前空間を示す開始記号であり、サブ名前空間名の間の区切り文字としても機能します。

namespacingに関する公式ドキュメントを参照してください。

Opcache

さらにPHP 7.0+では、一部の関数はopcodes)に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"
16
Webber

\は、PHP 5.3のネームスペースに使用されます。詳細は http://www.php.net/manual/en/language.namespaces.rationale.php を参照してください。名前空間とPHPに関する情報。

9
Damian Galarza