Structures d'organisation d'applications PHP intelligentes?

10

Il existe un million et une structure de système de fichiers qui vont dans la myriade de projets Open Source disponibles. Des éléments comme les modules, les fichiers de langue, les domaines, les bibliothèques tierces, les migrations, l'internationalisation, les sauvegardes et les liens système vers d'autres parties du système ont donné lieu à de nombreuses approches pour organiser le système de fichiers d'un projet.

En tant que développeur PHP, je me demande si un type de normalisation commence à émerger parmi les projets. Avec PSR-0, nous avons enfin une norme pour nommer et charger les fichiers - mais cela n'a rien à ma connaissance sur les autres composants qui composent le système ou comment ils peuvent être manipulés de manière saine.

Nous traitons beaucoup plus que juste MVC, alors quels exemples y a-t-il de grands projets gérant correctement toutes ces choses?

Xeoncross
la source
3
En tant que développeur PHP, je ne m'attendrais pas à la raison des composants PHP
CamelBlues
2
@CamelBlues Sur la base des probabilités pures, certains développeurs PHP doivent finir par gâcher et faire quelque chose de bien.
Xeoncross
Je n'ai pas vu grand-chose en ce qui concerne la normalisation. Jusqu'à ces dernières années, vous auriez vos dossiers pour les choses front-end (js, css), puis vous auriez inclus ou libs et puis des modèles ou des thèmes et c'était tout. Récemment, avec les frameworks MVC qui gagnent en popularité, tout n'est pas clair. Je dirais de ne pas vous inquiéter de l'utilisation d'une norme pour l'instant et de simplement préciser ce qui se passe où dans votre application particulière.
Jason

Réponses:

3

Il n'est pas vraiment possible de standardiser la manière dont les projets doivent être présentés, car "cela dépend".

Si vous introduisez une structure standard, mais que certaines ne correspondent pas aux exigences en cours de développement, vous pouvez vous retrouver avec du bruit supplémentaire dont vous n'avez pas besoin. De même, si les normes doivent fonctionner pour un large éventail de projets, elles devront intégrer trop de scénarios disparates.

Notre travail en tant que développeurs est de rechercher des modèles et des meilleures pratiques et de les appliquer à la tâche à accomplir. Nous utilisons notre expérience et notre expertise pour choisir la bonne structure de système de fichiers pour le projet sur lequel nous travaillons.

Fenton
la source
+1 Dans l'ensemble, je suis d'accord avec vous, c'est certainement un point valable. Cependant, si vous supprimez des choses en dehors de la langue (dossiers de sauvegarde, scripts cron / build, actifs statiques, etc.) et que vous vous concentrez uniquement sur la langue elle-même - je ne crois pas que le même argument puisse être avancé. Les langues ont déjà des limites imposées. Déterminer comment organiser toutes vos classes et tous les blocs de code pour qu'ils aient du sens pour chaque projet est un objectif réel et réalisable.
Xeoncross
0

Il ne semble pas y avoir beaucoup d'efforts de normalisation en cours, et pour être honnête, je ne vois pas l'avantage. Il n'y a qu'une seule règle à laquelle vous devez adhérer, c'est que vous ne devriez jamais avoir sous le docroot des choses qui n'y appartiennent pas (une précaution de sécurité de base).

En dehors de cela, j'irais simplement avec ce qui a du sens pour le projet.

Si vous utilisez MVC (via un framework ou ad-hoc), une structure de base avec / models, / views et / controllers est logique. Mais même si vous ne l'êtes pas, vous disposez généralement d'une sorte de couche d'accès aux données avec des classes qui correspondent à vos entités de données; il est logique d'avoir un répertoire pour ceux-ci; vous avez également généralement un tas de classes de logique métier et de fonctions utilitaires, donc un autre répertoire pour celles-ci; si vous utilisez un système de modèles, les modèles vont dans un autre répertoire; et puis vous voulez probablement un répertoire «bibliothèques», où vous mettez toutes les bibliothèques tierces. (Une fois que vous avez atteint ce point, vous faites à peu près du MVC de toute façon).

Si le projet est vraiment important, il peut probablement être divisé en sous-modules fonctionnels; si les sous-modules sont assez indépendants, il est logique de les utiliser à la place, avec un répertoire supplémentaire pour le code commun.

tdammers
la source