Cosa fa un \ (backslash) in PHP (5.3+)?


172

Cosa fa un \PHP?

Ad esempio, CSRF4PHP ha \FALSE, \session_ide \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);
    }
}

1
@mario argomento stackoverflow molto bello. Grazie per il link :)
Alfred

Immagino che questa domanda dovrebbe essere chiusa, ma non riesco a chiudere gli argomenti da solo ..
Alfred,

5
È una domanda duplicata, ma non è una cattiva domanda. Ma potresti aggiungere "barra rovesciata" al titolo, in modo che Google diventi più facile per qualcun altro.
Mario,

1
È importante rendersi conto che non sparano più al messaggero. Quando scopri di cosa si tratta, non incolparci :) OH NO, SONO TROPPO TARDI.
Tim Post

Risposte:


247

\ (barra rovesciata) è il separatore dello spazio dei nomi in PHP 5.3.

A \prima dell'inizio di una funzione rappresenta lo spazio dei nomi globale .

Metterlo lì assicurerà che la funzione chiamata provenga dallo spazio dei nomi globale, anche se esiste una funzione con lo stesso nome nello spazio dei nomi corrente.


1
Grazie! l'hai trovato usando google o lo sapevi già: P?
Alfred,

6
L'ho trovato su google intelligente. Non ho ancora avuto la possibilità di usare PHP 5.3 ed ero interessato alla risposta. Ci sono voluti un minuto ma l'ho trovato.
Alan Geleynse,

1
Iniziato con ciò php backslashche mi ha portato a un articolo sulla ricaduta della selezione come separatore dello spazio dei nomi, poi php namespacemi ha procurato la documentazione.
Alan Geleynse,

20
Googling "php backslash before function" mi ha portato qui.
igneosaur,

4
@igneosaur googling "Sono uno sviluppatore
front

23

Namespace

In PHP 5.3+ la barra rovesciata \ simbolo viene utilizzato negli spazi dei nomi. È il simbolo iniziale per indicare uno spazio dei nomi e funge anche da separatore tra i nomi degli spazi dei nomi secondari.

Vedi la documentazione ufficiale sullo spazio dei nomi .

Opcache

Inoltre in PHP 7.0+ alcune funzioni sono sostituite con codici operativi da OPCache , il che rende queste funzioni specifiche molto più veloci. Tuttavia, questo funziona solo quando le funzioni sono collocate nello spazio dei nomi radice. Vedi questa discussione su questo argomento. Quindi oltre allo spazio dei nomi, \influisce indirettamente anche sull'ottimizzazione del codice.

Le seguenti funzioni native beneficiano di questo effetto:

"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"

22

Per chiarire la potenziale confusione:

La barra rovesciata non implica l' ereditarietà delle classi .

Nel seguito, Animal, Dog, Shepherdnon c'è bisogno di essere classi, ma semplicemente gli spazi dei nomi . Significa qualcosa usato per raggruppare i nomi per evitare di nominare le collisioni .

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

I \mezzi principali sono Animalstati dichiarati nell'ambito globale.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.