217

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);
    }
}
4

4 に答える 4

308

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

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

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

于 2011-01-25T04:36:24.740 に答える
29

名前空間

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"
于 2018-07-19T08:49:03.417 に答える
28

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

バックスラッシュは、クラスの継承を意味するものではありません

以下でAnimalDog、、、Shepherdはクラスである必要はなく、単に名前空間である必要があります。名前の衝突を避けるために名前をグループ化するために使用されるものを意味します。

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

主要な\手段Animalは、グローバルスコープで宣言されました。

于 2014-09-03T14:50:23.093 に答える
10

これ\は、PHP5.3で名前空間に使用されます。名前空間とPHPの詳細については、 http://www.php.net/manual/en/language.namespaces.rationale.phpを参照してください。

于 2011-01-25T04:38:30.050 に答える