mardi 12 février 2013

Alias Git et répertoire courant


Lire la suite

jeudi 14 juillet 2011

Espace de noms et importations de classes

Il y a deux ou trois semaines, j'ai découvert un comportement étrange de PHP lorsque j'utilisais l'importation d'espaces de noms au sein de atoum, mon framework de tests unitaires pour PHP 5.3, matérialisé par le message d'erreur suivant :

Fatal error: Cannot use ns\class2 as class2 because the name is already in use in /path/to/ns_ns1_ns2_class1.php on line X

D'après PHP, j'importais une classe via la syntaxe use ns\class2 dans l'un de mes fichiers alors que son nom était déjà utilisé par une autre classe dans un autre fichier.

Après une petite prise de tête, j'ai réussi à isoler le cas posant problème en quelques lignes de code, et j'en ai déduis que l'ordre de déclaration de mes classes avait une importance, puisque suivant la façon dont j'incluais mes fichiers, j'obtenais, ou pas, le message d'erreur.

Or, un espace de noms est censé avoir une portée limitée au fichier dans lequel il est déclaré, et en conséquence, il me semblait que l'ordre d'inclusion des fichiers n'avait pas d'importance et donc que ce message n'avait pas de sens.

J'ai donc rédigé un rapport de bug à ce sujet, et j'ai attendu patiemment la réponse, pratiquement persuadé que j'avais débusqué un problème au sein de la gestion des espaces de nommage de PHP.

Lire la suite