Что делает \ (обратная косая черта) в PHP (5.3+)?

Что делает \ в PHP?

Например,

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

person Alfred    schedule 25.01.2011    source источник
comment
@mario очень хорошая тема stackoverflow. Спасибо за ссылку :)   -  person Alfred    schedule 25.01.2011
comment
Думаю, этот вопрос стоит закрыть, но закрывать темы я не могу ..   -  person Alfred    schedule 25.01.2011
comment
Это дубликат, но неплохой вопрос. Но вы можете добавить к заголовку обратную косую черту, чтобы кому-то было проще гуглить.   -  person mario    schedule 25.01.2011
comment
Важно понимать, что посланника больше не стреляют. Когда вы узнаете, в чем дело, не вините нас :) О НЕТ, я слишком поздно.   -  person Tim Post♦    schedule 25.01.2011


Ответы (4)


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

\ перед началом функции представляет глобальное пространство имен.

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

person Alan Geleynse    schedule 25.01.2011
comment
безопасно ли удалить его, если мой сервер вызывает ошибку? - person Robert Sinclair; 01.04.2016
comment
PhpUnit любит его использовать :) \ var_export () if (\ defined ('PHPUNIT_COMPOSER_INSTALL')) {;} - person Eugene Kaurov; 07.09.2017
comment
Но почему перед FALSE стоит обратная косая черта? - person RaelB; 11.03.2020

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

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

Далее Animal, Dog, Shepherd не обязательно должны быть классами, а должны быть просто пространствами имен. Означает что-то, что используется для группировки имен, чтобы избежать конфликтов имен.

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

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

person Nelu    schedule 03.09.2014

Пространства имен

В 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"
person Webber    schedule 19.07.2018
comment
Если это приводит к тому, что коды запускаются быстрее, интересно, почему они не применяют его по умолчанию? кто не любит спектакль? - person Mwthreex; 31.01.2021
comment
Вероятно потому, что OPCache долгое время не настраивался по умолчанию, и эта функция даже не была включена до версии 7. Также требуются знания для настройки и настроить. - person Webber; 02.05.2021

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

person Damian Galarza    schedule 25.01.2011