0

Je construis plusieurs sites qui ont besoin de "modules" similaires. Par exemple, les sites peuvent avoir exactement le même système de connexion, forum, etc.CodeIgniter - modulaire?

Y a-t-il un moyen de construire ces modules une seule fois et de simplement les "déposer" dans ces différents sites? Certains des défis que je vois:

  • Garder le code cohérent dans les différents sites. Toute modification apportée à un module doit se propager à tous les sites utilisant ce module. Je suppose que j'ai besoin d'un moyen de mettre à niveau? Base de données: ces fonctionnalités doivent fonctionner dans le cadre d'une application plus importante. Peut-être que le module doit définir des relations avec d'autres tables dans son site respectif.

Je suis sûr qu'il y a plus de problèmes. Je pense que je devrais regarder ceci: https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc/wiki/Home, mais je n'ai aucune expérience avec lui. Donc, je cherche des solutions, des suggestions, ou plus de problèmes à cette idée.

Répondre

0

Vous pouvez créer et utiliser des packages tiers en les ajoutant au dossier tiers (ce qui est nouveau pour CI 2). Il n'y a pas grand-chose dans les docs, mais j'ai trouvé ça.

http://codeigniter.com/user_guide/libraries/loader.html

Vous pouvez les charger automatiquement des paquets tiers dans le fichier autoload. Les packages peuvent avoir leurs propres contrôleurs, modèles, vues, etc.

Fait intéressant, Phil Sturgeon a écrit un peu (http://philsturgeon.co.uk/blog/2010/04/codeigniter-packages-modules) sur les paquets n'étant pas modules (au sens strict du terme), mais vous pourriez probablement utiliser des paquets tiers pour ce dont vous avez besoin.

+0

Nick, mon problème est que je sais que la partie DB de ces modules que je prévois de construire devra avoir des relations avec d'autres modules. Ce qui veut dire qu'il y a une sorte de couplage entre les modules. Comment faire face à cela? – StackOverflowNewbie

+0

Si vous chargez automatiquement vos modules tiers, vous devriez pouvoir utiliser les modèles dans différents contrôleurs de module. C'est ce que tu veux dire? –

+0

Je ne pense pas qu'ils comprennent des contrôleurs sur chaque paquet, mais je sais qu'il y avait un hack quelque part pour l'inclure (contrôleurs) – AceMark

0

Je les écrirais en tant que bibliothèques et utiliser des sous-modules Git pour gérer chaque module. Phil Sturgeon vient d'écrire un super post about doing this in CodeIgniter.

Si vous n'utilisez pas le contrôle de version, je ne vois pas comment synchroniser facilement toutes vos applications. Oui, HMVC vous permettra de décomposer votre application en modules réels, mais cela n'aidera pas à synchroniser ces modules entre vos applications.

+0

J'utilise SVN, mais en regardant dans Mercurial. Cependant, je ne sais pas encore comment je pourrais mettre à jour une partie du projet. – StackOverflowNewbie

0

Voici ma question sur 'Database communication in modular software'

que vous trouverez peut-être utile. Je suis un peu familier avec Drupal, et en tant qu'application modulaire, je pense qu'il peut être considéré comme un bon exemple de la façon dont les relations entre les modules doivent être définies.

Voici un bon article sur art-of-separation-of-concerns

Je voudrais entendre si vous avez exécuté dans des défis concrets, des solutions et des références en matière de conception modulaire CI.