2011-08-17 4 views
1

OK. Je suis en train de construire une application PHP (plate-forme) qui sera déployée plusieurs fois, uniquement avec des configurations différentes. L'application consiste en un backend et un frontend. Grâce au backend, nous sommes en mesure de configurer quels modules sont actifs, quels sont les paramètres et comment la plate-forme ressemble.Architecture: Plusieurs sites Web. Une base de code. Code personnalisé

Nous nous attendons à ce que les clients commencent à demander des fonctionnalités spécifiques sur leur plate-forme. Cela signifie que la plate-forme sera différente des autres. Mais, nous maintenons une base de code.

Quelle est la meilleure façon de résoudre ce problème? Puisque nous continuons à corriger les bogues et à développer de nouvelles fonctionnalités, il devrait être facile de prendre soin de toutes les plateformes. Nous avons un script que nous utilisons pour déployer nos mises à jour de plate-forme sur toutes nos plateformes.

Devrions-nous convertir toutes nos fonctionnalités en plugins afin que chaque plate-forme puisse être mise à jour manuellement si elle le souhaite? Donc, si un client veut quelque chose d'autre que le plugin d'origine, nous dupliquons le plugin et créons son propre plugin client? Mais le code est-il facile à maintenir si nous décidons de mettre à jour le plugin? Ou devrions-nous écrire des exceptions dans le code pour chaque client?

Devrions-nous avoir des fichiers séparés qui remplacent les fichiers de base pour chaque plate-forme avec un code personnalisé?

Quelle est la meilleure idée?

Répondre

1

Le grand tour sera d'équilibrer les besoins divergents des clients sans se retrouver avec un système massivement complexe qui est impossible à maintenir. Voici quelques approches que vous devriez considérer:

  • d'inversion de dépendance: il y a beaucoup de matériel à ce sujet, au fond, c'est une façon de structurer un système afin que les différentes parties en son sein dépendent des concepts plutôt que des applications concrètes . Cela vous permettra d'échanger ces implémentations pour différents clients. Il peut être utilisé pour tout, depuis la logique métier et les algorithmes jusqu'aux fournisseurs de données et aux widgets d'interface utilisateur. Je ne sais pas où le meilleur endroit est de commencer avec DI (et je viens d'un fond .Net pas un PHP) donc here's the Wikipedia entry comme un début.
  • Identifiez le genre de choses que les utilisateurs voudront changer et isoler ces choses dans des choses qui peuvent facilement être permutées en utilisant DI ou une autre approche pratique. Après avoir fait cela, essayez très fort de ne pas introduire de variations dans la base de code du framework (le noyau qui "héberge" les bits échangeables)
  • Commencez avec un PoC/Prototype. Construire des frameworks est très dur, votre première tentative pourrait bien fonctionner mais vos deuxième et troisième tentatives seront meilleures, l'expérience compte beaucoup
  • Mettez un peu d'effort pour rendre le système facile à tester, à la fois pendant le développement et après le déploiement. Toutes les pièces en mouvement, vous aurez besoin de bons diagnostics pour vous aider à isoler les problèmes et aider à l'intégration

Edit: Enfin, si vous ne les connaissez pas, il existe des frameworks PHP que vous pourriez utiliser ou simplement emprunter des approches - la communauté PHP Open Source est assez forte. Découvrez le Zend Framework.

Questions connexes