Les espaces de noms ne sont pas réservés aux classes de chargement automatique. Ils empêchent également les conflits de noms. En fait, c'est leur objectif principal.
Supposons que vous ayez un projet qui nécessite une classe nommée User
pour stocker des informations sur les utilisateurs de votre application, mais un plugin utilise également une classe (différente) nommée User
pour stocker des informations. Les espaces de noms vous permettent de créer votre classe dans un espace de noms (par exemple MyApp
) et de laisser le plugin utiliser un autre espace de noms (par exemple CoolPlugin
). Le code dans l' MyApp
espace peut simplement faire référence à User
(par exemple, new User();
), tout comme le code dans l' CoolPlugin
espace; chacun obtiendra le résultat attendu. Lorsque vous devez utiliser du code provenant d' un autre espace de noms, vous n'avez qu'à le préfixer. Par exemple, le code dans l' CoolPlugin
espace peut accéder à la User
classe MyApp
vianew \MyApp\User();
L'alternative est que chaque classe a besoin d'un nom complexe partout , comme class MyApp_User
et class CoolPlugin_User
. Les espaces de noms vous permettent de simplifier les choses la plupart du temps et d'éviter les conflits de nommage tout le temps.
Edit: Pour répondre à la question, "Y a-t-il une différence de performances entre les deux?"
Pas significatif, non. Je ne l'ai pas comparé, mais il y a probablement une différence au niveau nanoseconde. Cela dit, sacrifier la qualité du code pour des réglages de performances très petits n'est pas une bonne stratégie, vous devez donc utiliser les espaces de noms malgré tout. Pour des références de types de problèmes similaires, consultez PHPbench.com et cette réponse StackOverflow .
Votre code doit être incroyablement serré et extrêmement sensible au temps (pensez au trading à haute fréquence ou à la gestion des réactions nucléaires) avant de vous soucier de la micro-optimisation dans ce type de contexte. Si c'est vraiment sensible au temps, vous devriez probablement coder en c ou même en assembleur , pas dans des langages interprétés comme PHP.