Évaluation des espaces de noms PHP

11

Je suis au stade de la pré-version d'un projet PHP open-source, qui, je l'espère, sera utilisé par d'autres développeurs dans leurs propres projets. Le projet ne prend actuellement pas en charge les espaces de noms et j'essaie d'évaluer s'il doit utiliser des espaces de noms ou la convention de dénomination PEAR de Dir_Subdir_Class, qui semble avoir tous les mêmes avantages techniques sans certains des inconvénients. Pour être honnête, ce n'est pas un choix facile.

Quelques points à considérer contre les espaces de noms:

  • L'une des façons dont mon projet essaie de se différencier en fournissant une API plus simple que d'autres projets similaires. Parce que les espaces de noms sont nouveaux et aussi parce qu'ils sont plus compliqués que la convention d'appellation PEAR, les introduire dans la base de code rendra mon projet moins simple à utiliser. En les mettant en œuvre, je perds une certaine différenciation en termes de facilité d'utilisation.
  • Bien que je puisse voir certains avantages des espaces de noms, ils ne semblent pas résoudre un problème qui doit être résolu dans un produit PHP moderne qui utilise la convention de dénomination PEAR. Les conflits de dénomination lors de l'utilisation de mon projet doivent être minimes, voire inexistants.
  • Cet article me donne une pause dans l'adoption des espaces de noms car leur mise en œuvre a été moins que stellaire.
  • J'hésite également à sauter dans un train qui ne peut aller nulle part. Les espaces de noms étant une nouvelle fonctionnalité de PHP, je ne suis pas encore convaincu qu'ils deviendront standard.
  • Compatibilité. Presque tout le code PHP qui a jamais été écrit n'utilise pas d'espaces de noms car c'est une nouvelle fonctionnalité. D'autres bibliothèques seraient incompatibles sans conversion.

Quelques points pour l'utilisation des espaces de noms:

  • La perception. Si les espaces de noms deviennent standard et une meilleure pratique, mon projet pourrait rapidement devenir considéré comme non professionnel et obsolète sans eux.
  • Compétition. Alors que certains projets PHP concurrents commencent à utiliser des espaces de noms dans leurs dernières versions, beaucoup n'ont pas encore fait le saut. Cela pourrait donner à mon projet une longueur d'avance sur d'autres projets.
  • Les travaux futurs seraient plus faciles si je faisais le changement maintenant avant que le projet ne devienne public plutôt qu'après, où je devrais en supporter deux versions pendant un certain temps.
  • Je souhaite prendre en charge les meilleures pratiques et si les espaces de noms deviennent une meilleure pratique pour PHP, mon projet devrait les utiliser.

D'après ce que je peux dire, vous devez choisir une façon ou l'autre; vous ne pouvez pas faire les deux. Y a-t-il des points que je n'ai pas pris en compte? Y a-t-il des signes objectifs (pas de guerres de flammes, s'il vous plaît) qui pointent vers ou contre les espaces de noms devenant la norme professionnelle pour PHP? J'apprécierais toute idée ou ressource que vous seriez prêt à partager car j'ai besoin de prendre une décision bientôt.

VirtuosiMedia
la source

Réponses:

5

Deux signes que les espaces de noms en PHP sont là pour rester:

  1. Le schéma de dénomination PEAR a été abandonné au profit des espaces de noms dans PEAR2 .
  2. L'un des objectifs déclarés de Zend Framework 2.0 est d'être un exemple d'utilisation de PHP 5.3 , en utilisant pleinement les espaces de noms, entre autres. Je considère cela comme une indication forte que Zend est pleinement engagé dans les espaces de noms et continuera à les soutenir et à les faire évoluer (espérons-le, pour le mieux).

Je suis entièrement d'accord avec vous que l'implémentation actuelle des espaces de noms fait pour le moins défaut, mais vos arguments contre leur utilisation ne sont pas si solides. Même dans leur forme actuelle, les espaces de noms prévoient:

  • Meilleure organisation du code,
  • Éviter les collisions de noms,
  • Contexte des classes, fonctions et constantes.

Gardez à l'esprit que la plupart des arguments contre les espaces de noms PHP sont par rapport aux implémentations dans d'autres langages et non contre leurs mérites réels en tant que fonctionnalité.

yannis
la source
+1 pour les liens. Pourriez-vous développer la meilleure organisation du code et les points de contexte? J'ai un peu de mal à comprendre comment il fournit une meilleure organisation du code. Il semble que la plupart des projets s'en tiennent à la structure 1: 1 de classe à fichier regroupée dans des répertoires logiques, la même que celle que vous utiliseriez dans le schéma de dénomination PEAR. Même ZF2 semble utiliser la même structure de répertoires et de fichiers dans la plupart des cas, mais tout à l'heure avec des espaces de noms. C'est différent, mais je ne vois pas nécessairement comment c'est mieux ou plus organisé que des répertoires et des fichiers bien nommés en premier lieu.
VirtuosiMedia
J'ai également du mal avec le point de contexte. Si quoi que ce soit, il semble que les espaces de noms suppriment le contexte pour avoir un style de codage plus succinct plutôt que d'ajouter du contexte. Par exemple, si j'instancie une nouvelle classe au fond d'un fichier, je dois maintenant trouver où l'espace de noms a été déclaré pour déterminer de quelle classe il s'agit plutôt que de l'avoir immédiatement apparent à partir du nom de la classe. À moins que je manque quelque chose, il semble que les espaces de noms soient moins verbeux, mais au détriment de la clarté.
VirtuosiMedia
@VirtuosiMedia Le PEAR et les anciens schémas de nommage ZF émulent des espaces de noms, donc mes trois points sont quelque peu vrais pour eux aussi. Ce que j'essaie de souligner, c'est que si ces points sont vrais dans l'implémentation actuelle des espaces de noms PHP, alors leur petit snafus ne suffit pas pour ne pas les utiliser. Avec une meilleure organisation du code, je veux dire principalement entre les fichiers, en adoptant une structure et une hiérarchie sensées et logiques pour vos classes, ce qui est bien sûr faisable sans espaces de noms. Mais les espaces de noms (et les schémas qui les émulent ) sont une fonctionnalité qui vous aide à atteindre les trois points à la fois.
yannis
Je t'ai eu. Merci pour la clarification. Voyez-vous des avantages significatifs pour les espaces de noms réels par rapport aux espaces de noms émulés ?
VirtuosiMedia
1
@VirtuosiMedia Tous les points pour l'utilisation des espaces de noms que vous faites sur la question sont valables. À cela, j'ajouterais que les espaces de noms PHP aident votre code à se sentir un peu plus naturel pour les codeurs de différents horizons, ce qui pourrait être inestimable dans un grand projet. De plus, il n'y a pas de norme pour les espaces de noms émulés , bien sûr la plupart d'entre eux sont à peu près les mêmes, mais l'utilisation d' espaces de noms réels garantit que tout le monde utilise le même schéma. BTW il y a un espace de noms que vous pouvez utiliser pour nommer votre code.
yannis