Co robi \ (odwrotny ukośnik) w PHP (5.3+)?

Co robi \ w PHP?

Na przykład, CSRF4PHP ma \FALSE, \session_id, i \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);
    }
}
Author: Webber, 2011-01-25

4 answers

\ (backslash) jest separatorem przestrzeni nazw w PHP 5.3.

A \ przed rozpoczęciem funkcji reprezentuje globalną Przestrzeń nazw .

Umieszczenie go tam zapewni, że wywołana funkcja pochodzi z globalnej przestrzeni nazw, nawet jeśli w bieżącej przestrzeni nazw istnieje funkcja o tej samej nazwie.

 271
Author: Alan Geleynse,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-27 01:29:15

Aby wyjaśnić potencjalne zamieszanie:

Ukośnik wsteczny nie implikuje dziedziczenia klas.

W następujących, Animal, Dog, Shepherd nie muszą być klasami, ale po prostu przestrzeniami nazw . Oznacza coś, co używane jest do grupowania nazw razem, aby uniknąć kolizji nazw.

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

Czołówka \ oznacza Animal została zadeklarowana w zasięgu globalnym.

 23
Author: Nelu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:54:44

Przestrzenie nazw

W PHP 5.3 + symbol ukośnika \ jest używany w przestrzeniach nazw. Jest to symbol startowy wskazujący przestrzeń nazw, a także służy jako separator między nazwami podrzędnymi.

Zobacz oficjalną dokumentację o namespacing.

Opcache

Dodatkowo w PHP 7.0 + niektóre funkcje są zastąpione przez opcodes przez OPCache , co sprawia, że te specyficzne funkcje działają znacznie szybciej. Jednak to działa tylko wtedy, gdy funkcje są umieszczone w głównej przestrzeni nazw. Zobacz też dyskusja o tym temacie. Tak więc oprócz przestrzeni nazw, \ pośrednio wpływa również na optymalizację kodu.

Następujące funkcje natywne korzystają z tego efektu:

"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"
 23
Author: Webber,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-19 08:49:03

\ jest używany w PHP 5.3 Dla przestrzeni nazw. Zobacz http://www.php.net/manual/en/language.namespaces.rationale.php aby uzyskać więcej informacji na temat przestrzeni nazw i PHP.

 9
Author: Damian Galarza,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-01-25 04:38:30