Что делает \ (обратная косая черта) в PHP (5.3+)? - PullRequest
145 голосов
/ 25 января 2011

Что делает \ в 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 ]

201 голосов
/ 25 января 2011

\ (обратная косая черта) - это разделитель пространства имен в PHP 5.3.

A \ перед началом функции представляет собой Global Namespace .

Помещение его туда гарантирует, что вызываемая функция будет из глобального пространства имен, даже если в текущем пространстве имен есть функция с тем же именем.

19 голосов
/ 03 сентября 2014

Чтобы прояснить потенциальную путаницу:

Обратная косая черта не подразумевает наследование класса .

В дальнейшем Animal, Dog, Shepherd не обязательно должны быть классами, а просто пространства имен Значение чего-то, что использовалось для объединения имен в во избежание коллизий имен .

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

Ведущий \ означает, что Animal был объявлен в глобальной области видимости.

15 голосов
/ 19 июля 2018

* Namespaces 1002 *

В PHP 5.3+ символ обратной косой черты \ используется в пространствах имен. Это начальный символ для обозначения пространства имен, который также служит разделителем между именами подпространств имен.

См. Официальную документацию о 1010 * Пространства имен *.

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"
9 голосов
/ 25 января 2011

\ используется в PHP 5.3 для пространств имен. См. http://www.php.net/manual/en/language.namespaces.rationale.php для получения дополнительной информации о пространствах имен и PHP.

...