|
||||||
| Espace Clients |
|
|||||
|
- 95% des demandes d'aide de nos clients sont traités en moins de 2 heures ! - Nous sommes toujours en pleine innovation ! - Nous améliorons sans cesse la qualité de nos services ! |
Foire aux questions : ce que vous devez savoir des espaces de nomsCette FAQ est décomposée en deux sections : les questions courantes, et les points particuliers de l'implémentation, qui peuvent être utile à la compréhension globale. D'abord, les questions courantes.
Voici les points particuliers de l'implémentation, qui peuvent être utile à la compréhension globale.
Si je n'utilise pas d'espaces de noms, est-ce que je dois m'en soucier?Non, les espaces de noms n'affectent pas le code existant, d'une manière ou d'une autre, ni le code qui sera produit et qui n'utilise pas les espaces de noms. Vous pouvez écrire ceci si vous voulez :
Exemple #1 Accès à une classe globale de l'extérieur d'un espace de noms
<?php
This is functionally equivalent to:
Exemple #2 Accessing global classes outside a namespace
<?php
Comment utiliser une classe globale ou interne depuis un espace de noms?
Exemple #3 Accès aux classes internes depuis un espace de noms
<?php
Comment utiliser les classes d'espaces de noms, les fonctions ou les constantes dans leur propre espace?
Exemple #4 Accès aux classes, fonctions et constantes internes dans un espace de noms
<?php
Comment est-ce qu'un nom comme \mon\nom ou \nom est résolu?Les noms qui commencent par \ sont toujours résolus en ce à quoi ils ressemblent, ce qui fait que \mon\nom est en fait mon\nom, et \Exception est Exception. Exemple #5 Noms d'espaces absolus
<?php
Comment est-ce qu'un nom tel que mon\nom est résolu?Les noms qui contiennent un anti-slash mais ne commencent par par un anti-slash, comme mon\nom peuvent être résolus de deux manières différentes. S'il y a eu une commande d'importation qui fait un alias de mon, alors l'alias importé est appliqué à la place de mon, et l'espace de noms devient mon\nom. Sinon, l'espace de noms courant est ajouté avant le chemin de la classe mon\nom.
Exemple #6 Noms qualifiés
<?php
Comment un nom de classe sans qualification, tel que nom, est résoluLes noms de classes qui ne contiennent pas d'anti-slash comme nom peuvent être résolus de deux manières différentes. S'il y a une instruction d'importation qui définit un alias pour nom, alors l'alias est appliquée. Sinon, l'espace de noms courant est utilisé, et préfixé à nom.
Exemple #7 Classes sans qualification
<?php
Comment une fonction sans qualification ou une constante de nom nom est résolueLes fonctions et constantes qui n'ont pas d'anti-slash dans leur nom comme nom sont résolues de deux manières différentes : D'abord, l'espace de noms courants est préfixé à name. Ensuite, si la constante ou la fonction nom n'existe pas dans l'espace de nom courant, la version globale de la constante ou la fonction nom est utilisée.
Exemple #8 Fonctions et constantes sans espace de noms
<?php
Les noms importés ne doivent pas entrer en conflit avec les classes définies dans le même fichierLa combinaison de script suivante est valide : file1.php
<?phpanother.php
<?phpfile2.php
<?php
Il n'y a pas de conflit de noms, même si la classe MaClasse existe dans l'espace de noms mes\trucs, car la définition de MaClasse est dans un fichier séparé. Cependant, l'exemple suivant produit une erreur fatale à cause d'un conflit de noms, car MaClasse est définie dans le même fichier que l'instruction use.
<?php
Les espaces de noms imbriqués sont interditsPHP ne permet pas d'imbriquer des espaces de noms.
<?phpCependant, il est facile de simuler des espaces de noms imbriqués, comme ceci :
<?php
Ni les fonctions, ni les constantes ne peuvent être importées avec la commande useLes seuls éléments qui sont affectés par la commande use sont les espaces de noms et les classes. Afin de réduire le nom d'une constante ou d'une fonction, il faut l'importer dans un espace de noms.
<?php
Les noms d'espaces de noms dynamiques doivent protéger l'anti-slashIl est très important de réaliser que, comme les anti-slash sont utilisés comme caractères de protection dans les chaînes, il faut toujours les doubler pour pouvoir les utiliser dans une chaîne. Sinon, il y a un risque d'utilisation inattendue : Exemple #9 Dangers de l'utilisation des espaces de noms dans une chaîne
<?phpDans une chaîne à double guillemets, la séquence de protection est beaucoup plus sécuritaire à utiliser, mais il est quand même recommandé de toujours protéger les anti-slashs dans une chaîne qui contient un espace de noms. Des constantes indéfinies référencées avec un anti-slash produisent une erreur fataleToute constante indéfinie qui est sans qualificatif tel que FOO va produite une alerte : PHP supposait que FOO était la valeur de la constante. Toute constante, qualifiée partiellement ou totalement, qui contient un anti-slash, produite une erreur fatale si indéfinie. Exemple #10 Constantes indéfinies
<?php
Impossible de remplacer des constantes spéciales comme NULL, TRUE, FALSE, ZEND_THREAD_SAFE ou ZEND_DEBUG_BUILDToute tentative dans un espace de noms de remplacer les constantes natives ou spéciales engendre une erreur fatale. Exemple #11 Constantes qui ne peuvent être redéfinies
<?php
|


