web-dev-qa-db-fra.com

Que fait un \ (barre oblique inverse) dans PHP (5.3+))?

Qu'est-ce qu'un \ faire en PHP?

Par exemple, CSRF4PHP a \FALSE, \session_id, et \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);
    }
}
148
Alfred

\ _ (barre oblique inverse) est le séparateur d’espace de nommage dans PHP 5.3.

UNE \ avant le début d'une fonction représente le espace de noms global .

En le mettant ainsi, vous vous assurerez que la fonction appelée provient de l'espace de noms global, même s'il existe une fonction du même nom dans l'espace de noms actuel.

209
Alan Geleynse

Pour clarifier une confusion potentielle:

La barre oblique inverse n'implique pas l'héritage de classe .

Dans ce qui suit, Animal, Dog, Shepherd ne doivent pas nécessairement être des classes, mais simplement namespaces . Ce qui signifie quelque chose utilisé pour regrouper les noms ensemble éviter les collisions de nommage .

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

Le premier \ _ signifie que Animal a été déclaré dans la portée globale.

20
Nelu

Espaces de nommage

Dans PHP 5.3+, le symbole antislash \ Est utilisé dans les espaces de noms. Il s'agit du symbole de départ pour indiquer un espace de noms et sert également de séparateur entre les noms d'espaces de noms.

Voir la documentation officielle sur namespacing.

Opcache

De plus dans PHP 7.0+ certaines fonctions sont remplacées par des opcodes par OPCache, ce qui accélère considérablement l'exécution de ces fonctions spécifiques . Cependant, cela ne fonctionne que lorsque les fonctions sont placées dans l'espace de noms racine. Voir ceci discussion à propos de ce sujet. Ainsi, outre l'espacement des noms, le paramètre \ Affecte également l'optimisation du code.

Les fonctions natives suivantes bénéficient de cet effet:

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

Le \ est utilisé dans PHP 5.3 pour les espaces de noms. Voir http://www.php.net/manual/fr/language.namespaces.rationale.php pour plus d'informations informations sur les espaces de noms et PHP.

9
Damian Galarza