Académique Documents
Professionnel Documents
Culture Documents
Dans la partie 1, nous avons examin l'utilit des espaces de noms en PHP et le motcl namespace. Dans cet article, nous examinons la commande use et la faon dont PHP rsout les noms d'espace de noms.
Comment utiliser les espaces de noms en PHP Partie 2 : importation, alias et rsolution de nom par Craig Buckler (Auteur) Joris Crozier (Traducteur)
Introduction...................................................................................................................................................................3 Nom pleinement qualifi.........................................................................................................................................3 Nom qualifi............................................................................................................................................................3 Nom non qualifi.................................................................................................................................................... 4 II - Travail au sein du mme espace de noms........................................................................................................... 4 III - Importation d'espace de noms..............................................................................................................................4 IV - Les alias d'espace de noms.................................................................................................................................5 V - Les rgles de rsolution de noms en PHP........................................................................................................... 5 VI - Liens......................................................................................................................................................................6
-2Copyright 2009 - Joris CROZIER. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://jcrozier.developpez.com/tutoriels/web/php/espaces-noms-importation-alias-resolution-nom/
Comment utiliser les espaces de noms en PHP Partie 2 : importation, alias et rsolution de nom par Craig Buckler (Auteur) Joris Crozier (Traducteur)
Introduction
A titre d'exemple, nous allons dfinir deux blocs de code presque identique, la seule diffrence est leur espace de noms : lib1.php
<?php // application library 1 namespace App\Lib1; const MYCONST = 'App\Lib1\MYCONST'; function MyFunction() { return __FUNCTION__; } class MyClass { static function WhoAmI() { return __METHOD__; } } ?>
lib2.php
<?php // application library 2 namespace App\Lib2; const MYCONST = 'App\Lib2\MYCONST'; function MyFunction() { return __FUNCTION__; } class MyClass { static function WhoAmI() { return __METHOD__; } } ?>
Nom qualifi
Un identifiant avec au moins un sparateur d'espace de noms, par exemple LIB1\MyFunction().
-3Copyright 2009 - Joris CROZIER. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://jcrozier.developpez.com/tutoriels/web/php/espaces-noms-importation-alias-resolution-nom/
Comment utiliser les espaces de noms en PHP Partie 2 : importation, alias et rsolution de nom par Craig Buckler (Auteur) Joris Crozier (Traducteur)
<?php namespace App\Lib1; require_once('lib1.php'); require_once('lib2.php'); header('Content-type: text/plain'); echo MYCONST . "\n"; echo MyFunction() . "\n"; echo MyClass::WhoAmI() . "\n"; ?>
Mme si l'on inclut la fois lib1.php et lib2.php, les identificateurs MYCONST, MyFunction, et MyClass rfrencent seulement le code dans lib1.php. Cela se produit parce que le code myapp1.php est dans le mme espace de noms \LIB1 : Rsultat :
App\Lib1\MYCONST App\Lib1\MyFunction App\Lib1\MyClass::WhoAmI
Vous pouvez dfinir autant de use que voulu ou vous pouvez sparer les espaces de noms par une virgule. Dans cet exemple, nous avons import l'espace de noms App\LIB2. Nous ne pouvons toujours pas faire rfrence directement MYCONST, MyFunction ou MyClass parce que notre code se trouve dans l'espace global, et PHP va les chercher l-bas. Toutefois, si l'on ajoute un prfixe de LIB2\, ils deviennent des noms qualifis. PHP va chercher dans les espaces de noms imports jusqu' ce qu'il trouve une correspondance. Rsultat :
App\Lib2\MYCONST App\Lib2\MyFunction App\Lib2\MyClass::WhoAmI
-4Copyright 2009 - Joris CROZIER. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://jcrozier.developpez.com/tutoriels/web/php/espaces-noms-importation-alias-resolution-nom/
Comment utiliser les espaces de noms en PHP Partie 2 : importation, alias et rsolution de nom par Craig Buckler (Auteur) Joris Crozier (Traducteur)
<?php use App\Lib1 as L; use App\Lib2\MyClass as Obj; header('Content-type: text/plain'); require_once('lib1.php'); require_once('lib2.php'); echo echo echo echo ?> L\MYCONST . "\n"; L\MyFunction() . "\n"; L\MyClass::WhoAmI() . "\n"; Obj::WhoAmI() . "\n";
La premire dclaration de use dfinit App\LIB1 comme L . Les noms qualifis utilisant des L seront traduits par App\LIB1 au moment de la compilation. On peut donc se rfrer L\MYCONST et L\MyFunction() plutt qu' leurs noms pleinement qualifis. La seconde dclaration de use est plus intressante. Elle dfinit 'obj' comme alias pour la classe MyClass au sein de l'espace de noms App\Lib2\. Cela n'est possible que pour les classes, pas pour des constantes ou des fonctions. Nous pouvons maintenant utiliser new Obj() ou excuter des mthodes statiques, comme indiqu ci-dessus. Rsultat
App\Lib1\MYCONST App\Lib1\MyFunction App\Lib1\MyClass::WhoAmI App\Lib2\MyClass::WhoAmI
-5Copyright 2009 - Joris CROZIER. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://jcrozier.developpez.com/tutoriels/web/php/espaces-noms-importation-alias-resolution-nom/
Comment utiliser les espaces de noms en PHP Partie 2 : importation, alias et rsolution de nom par Craig Buckler (Auteur) Joris Crozier (Traducteur)
VI - Liens
Vous pouvez aussi aller voir mes autres traductions.
-6Copyright 2009 - Joris CROZIER. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://jcrozier.developpez.com/tutoriels/web/php/espaces-noms-importation-alias-resolution-nom/