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