2012-05-28 16 views
25

Ho appena visto l'uso di una barra rovesciata in un riferimento a un oggetto PHP ed ero curioso (non l'ho mai visto prima). Cosa significa?Backslash in PHP - cosa significa?

$mail = new SendGrid\Mail(); 

Se sei curioso, ecco SendGrid's documentation.

+1

Questo è un duplicato di http://stackoverflow.com/questions/4075521/backslash-syntax-when-creating-objects, in modo da poter trovare la risposta c'è. – 11684

+0

@ 11684 ha appena visto che ... oops – Kyle

+0

Questo fantastico post spiega in modo molto più dettagliato http://stackoverflow.com/q/4790020/6521116 –

risposta

26

È perché stanno usando PHP namespaces. I namespace sono nuovi a partire da PHP 5.3.

+0

devono essere aggiornati, ora, molti progetti utilizzano. –

13

È l'operatore dello spazio dei nomi di PHP: http://php.net/manual/en/language.namespaces.php.

Non chiedere perché è un backslash. È (imho) la scelta più stupida possibile che avrebbero potuto fare, basando le loro decisioni su un sistema di punteggio molto inclinato/bigotto che aveva senso solo per gli sviluppatori.

+2

Bene, il backslash era la scelta migliore disponibile (si vorrebbe usare ':::' o '-> ->'?). – xfix

+0

@GlitchMr Perché non '->' come oggetti normali ... – jadkik94

+0

Potrebbe funzionare anche, ma '-> Ciao-> qualcosa()' apparirebbe brutto. E non penso che PHP vorrebbe che l'operatore significasse due cose contemporaneamente (specialmente così diverse, quando vedrei 'Abc-> def()' per la prima volta penserei che sia un metodo di costante 'Abc'). – xfix

6

Questa è la sintassi per gli spazi dei nomi. Puoi leggere ulteriori informazioni sugli spazi dei nomi allo PHP documentation. Loro richiedono almeno PHP 5.3.

Ad esempio:

namespace SendGrid; 
function Mail() { 
    // You can access this function by using SendGrid\Mail() externally 
}