Astuces

Si vous voulez écrire du code portable, il est recommandé de ne pas placer de nombreuses variables, fonctions ou classes dans l'espace de noms global. Cela empêchera les conflits de nommage avec le code tiers ainsi que des ajouts possibles au langage.

Une façon commune de prévenir les conflits de noms de fonctions et de classes est de les ajouter à leur propre namespace.

<?php

namespace MyProject;

function
my_function() {
return
true;
}

\MyProject\my_function();

Cela a encore besoin de vous pour garder une trace des espaces de noms déjà utilisés, mais une fois que vous avez décidé sur un espace de noms que vous allez utiliser, vous pouvez ajouter toutes les fonctions et les classes à elle sans avoir à penser à nouveau les conflits.

Il est considéré comme la meilleure pratique pour limiter le nombre de variables ajoutées à la portée globale afin d'éviter les conflits de nommage avec le code tiers.

Note: Portée des variables

En raison des règles de portée de PHP, les variables définies à l'intérieur des fonctions et des méthodes ne sont pas dans la portée globale et, en tant que telles, ne peuvent pas entrer en conflit avec d'autres variables définies dans la portée globale.

add a note add a note

User Contributed Notes 4 notes

up
27
willian at gt44 dot com
11 years ago
I don't think it makes sense nowadays. We have namespaces now!
up
1
kanone at rogers dot com
10 years ago
The javascript community has developed a strong cultural bias against adding anything to the global namespace.  (See e.g. Addy Osmani's article on Essential JavaScript Namespacing Patterns .)  Namespaces have been available in JS for many years and are ubiquitous.  There is also a great deal of freely available tutorial material for the interested reader.
up
1
mestresan AT gmail DOT com
10 years ago
Even though nowadays we do have namespaces, for the cases in which the user chooses to not use namespaces theses tips should be followed.
up
1
earnie at users dot sourceforge dot net
10 years ago
@willian at gt44 dot com: What about clashes of the namespace?  It is still good advice to check for previously used names before assigning anything to the global namespace.
To Top