Что делает \ (обратная косая черта) в PHP (5.3+)?
Что делает \
делать в 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 ответа
\
(обратная косая черта) - это разделитель пространства имен в PHP 5.3.
\
перед началом функции представляет глобальное пространство имен.
Помещение его туда гарантирует, что вызываемая функция будет из глобального пространства имен, даже если в текущем пространстве имен есть функция с тем же именем.
Пространства имен
В 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"
Чтобы прояснить потенциальную путаницу:
Обратная косая черта не подразумевает наследование классов.
В следующих, Animal
, Dog
, Shepherd
не должны быть классами, а просто пространства имен. Имеется в виду что-то, что используется для группировки имен во избежание коллизий имен
$myDog = new \Animal\Dog\Shepherd\GermanShepherd();
Ведущий \
средства Animal
был объявлен в глобальном масштабе.
\
используется в PHP 5.3 для пространств имен. См. http://www.php.net/manual/en/language.namespaces.rationale.php для получения дополнительной информации о пространствах имен и PHP.