2009-12-29 5 views
1

Je suis sur le point de commencer à écrire ma première grande application CodeIgniter, mais avant de commencer, je me demandais quel devrait être le rôle des bibliothèques. Je suis un débutant à MVC, mais d'après ce que je comprends le modèle devrait être où les structures de données sont stockées (logique métier). La bibliothèque est-elle un lieu d'écriture de la logique applicative, en plus des contrôleurs? Est-ce une bonne idée de combiner des modèles dans les bibliothèques? Par exemple, je vais écrire un système de gestion des membres qui aura des profils et des messages. À quoi devrait ressembler le MVC + L (bibliothèque)? 2 modèles (profil, message) et une bibliothèque qui les combine? Une bibliothèque pour chaque objet? Pas de bibliothèques, juste des modèles et des contrôleurs?Conception de bibliothèques dans CodeIgniter

Répondre

6

Les bibliothèques de CodeIgniter sont simplement des classes PHP. Chaque fois que vous écrivez normalement une classe PHP, dans CodeIgniter, vous écrivez une 'Bibliothèque'.

Pour la plupart, les données qui se disputent ces appels de base de données ou manipulations de données massives devraient aller dans un modèle. Évidemment, le HTML avec de petites quantités de PHP va dans Views, et l'interaction de l'utilisateur appartient au contrôleur.

Vous voudriez probablement une bibliothèque d'authentification, qui serait une classe PHP. Cependant, il existe plusieurs bibliothèques Open Source disponibles telles que Tank Auth et DX Auth que vous pouvez consulter.

Règle de base: Une bibliothèque PHP traditionnelle est généralement un tas de fonctions connexes, telles que les fonctions de date, mais dans CodeIgniter serait une aide. Une classe/objet PHP traditionnel serait une bibliothèque CodeIgnter.

Ne jamais avoir peur de lire le code source dans les system/helpers et system/libraries dossiers

+0

use application/not system/- c'est une ancienne réponse. – sitesbyjoe

0

Je propose juste des modèles et des contrôleurs. Je pense que la bibliothèque est pour des logiques qui peuvent être réutilisées, pas une application spécifique. Et je pense que si le contrôleur et le modèle peuvent faire le travail, allez-y.

+1

Une bibliothèque peut contenir des fonctionnalités logiques pour n'importe quoi, et pas seulement pour des applications spécifiques. –

0

logique métier devrait être dans les contrôleurs, seule interaction avec la base de données devrait aller dans les modèles.

Ma question Je me demande où mettre quelque chose est très simple. Je regarde le "si" dans mon modèle. Sont-ils là pour vérifier les données? S'ils vérifient si l'interaction avec la base de données a réussi ou non, le code est là où il appartient. S'il vérifie les valeurs des données retournées, il est probablement au mauvais endroit (et devrait aller dans le contrôleur). Comme l'a dit Zack, HTML devrait contenir du code php mineur dans les vues.

Les bibliothèques sont plus pour supporter les classes. J'ai fait une bibliothèque (classe) pour un calendrier spécial dans le passé par exemple.

Si vous n'avez même pas besoin d'un cours, mettez-le dans une aide. (par exemple parce que vous n'avez qu'une fonction de manipulation de chaînes spécifique, mais que vous voulez l'utiliser à différents endroits)

0

Je suis d'accord avec Dennis Decoene. Mais après réflexion, pourquoi les développeurs de bibliothèques authentiques créent-ils un mélange de bibliothèques et d'assistants dans leur application d'authentification, où leurs bibliothèques effectuent des procédures beaucoup plus «sans rapport» avec la nature des classes php.