Que fait un \
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);
}
}
php
namespaces
opcode
opcache
Alfred
la source
la source
Réponses:
\
(barre oblique inverse) est le séparateur d'espace de noms dans PHP 5.3.Un
\
avant le début d'une fonction représente l' espace de noms global .Le placer là garantira 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.
la source
php backslash
m'a conduit à un article sur les retombées de sa sélection comme séparateur d'espace de noms, puisphp namespace
j'ai obtenu la documentation.Espaces de noms
Dans PHP 5.3+, le
\
symbole de la barre oblique inverse est utilisé dans les espaces de noms. C'est le symbole de début pour indiquer un espace de noms et sert également de séparateur entre les noms de sous-espaces de noms.Voir la documentation officielle sur l' espacement des noms .
Opcache
De plus, dans PHP 7.0+, certaines fonctions sont remplacées par des opcodes par OPCache , ce qui rend ces fonctions spécifiques beaucoup plus rapides. Cependant, cela ne fonctionne que lorsque les fonctions sont placées dans l'espace de noms racine. Consultez cette discussion sur ce sujet. Ainsi, en plus de l'espace de noms, cela
\
affecte indirectement l'optimisation du code.Les fonctions natives suivantes bénéficient de cet effet:
la source
Pour clarifier la confusion potentielle:
La barre oblique inverse ne signifie l' héritage de classe .
Dans ce qui suit,
Animal
,Dog
,Shepherd
ne doivent pas être des classes, mais simplement des espaces de noms . Ce qui signifie quelque chose utilisé pour regrouper les noms pour éviter les collisions de noms .Le principal
\
moyen aAnimal
été déclaré dans la portée globale.la source
Le
\
est utilisé dans PHP 5.3 pour les espaces de noms. Voir http://www.php.net/manual/en/language.namespaces.rationale.php pour plus d'informations sur les espaces de noms et PHP.la source