Domanda

Cosa fa un \ fare in PHP?

Per esempio, CSRF4PHP ha \FALSE, \session_id e \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);
    }
}
È stato utile?

Soluzione

\ (backslash) è il separatore di namespace in PHP 5.3.

A \ prima dell'inizio di una funzione rappresenta il globale Namespace .

Mettere ci farà sì che la funzione chiamata è dal namespace globale, anche se v'è una funzione con lo stesso nome nello spazio dei nomi corrente.

Altri suggerimenti

Per chiarire potenziale confusione:

La barra inversa non implicare di ereditarietà di classe .

Nel seguente, Animal, Dog, Shepherd non devono essere classi, ma semplicemente namespace . Significato qualcosa utilizzato per i nomi dei gruppi insieme per evitare di conflitti di denominazione .

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

Il principale mezzo \ Animal è stata dichiarata nello scope globale.

namespace

In PHP 5.3+ il simbolo \ barra rovesciata viene utilizzato in spazi dei nomi. E 'il simbolo di partenza per indicare uno spazio dei nomi e funge da separatore tra i nomi di sub-namespace anche.

Vedere documentazione ufficiale su namespacing .

Opcache

Inoltre in PHP 7.0 e versioni successive alcune funzioni sono sostituito con codici operativi di OPCache , che rende queste funzioni specifiche correre molto più veloce. Tuttavia questo funziona solo quando le funzioni sono collocati nello spazio dei nomi radice. Vedere questo discussione su questo argomento. Così, oltre namespacing, il \ influisce indirettamente anche l'ottimizzazione del codice.

Le seguenti funzioni native beneficiare 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"

Il \ viene utilizzato in PHP 5.3 per i namespace. Vedere http://www.php.net/manual/en/language. namespaces.rationale.php per ulteriori informazioni su spazi dei nomi e PHP.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top