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トピック。リンクをありがとう:)
アルフレッド

..私はこの質問を閉じる必要があります推測するが、私は自分自身に近い話題できない
アルフレッド

5
これは重複していますが、悪い質問ではありません。ただし、タイトルに「バックスラッシュ」を追加すると、他のユーザーがGoogleで検索しやすくなります。
マリオ2011年

1
彼らがメッセンジャーを撃つことはもうないということを認識することが重要です。それが何であるかを見つけたとき、私たちを責めないでください:) OH NO、私は遅すぎます。
Tim Post

回答:


247

\ (バックスラッシュ)は、PHP 5.3の名前空間セパレーターです。

\関数の開始前のA は、グローバル名前空間を表します。

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


1
ありがとう!あなたはグーグルを使ってそれを見つけましたか、それともこれを既に知っていましたか:P?
アルフレッド、

6
賢いグーグルで見つけた。私はまだPHP 5.3を使用する機会がなく、答えに興味がありました。少し時間がかかりましたが、見つかりました。
アランGeleynse '25年

1
で始まりphp backslash、名前空間の区切り文字として選択することの影響についての記事に私を導き、それからphp namespace私にドキュメントを手に入れました。
アランGeleynse

20
「関数の前にphpのバックスラッシュ」をグーグルで検索すると、ここに移動しました。
イグノサウルス2015年

4
@igneosaur googling「私はフロントエンドの開発者であり、PHPは恐ろしい」と私をここに連れてきました
Telarian

23

名前空間

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

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

Opcache

さらに、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はグローバルスコープで宣言されました。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.