Comment vous organiser et de gérer vos objets d'assistance comme le moteur de base de données, notification de l'utilisateur, la gestion des erreurs et ainsi de suite dans une en PHP, orienté objet projet?
Dire que j'ai un gros CMS PHP. Le CMS est organisé dans les différentes classes. Quelques exemples:
- l'objet de base de données
- gestion des utilisateurs
- une API pour créer/modifier/supprimer des éléments
- une messagerie objet pour afficher des messages à l'utilisateur final
- un gestionnaire de contexte qui vous amène à la page de droite
- une barre de navigation de la classe qui affiche les boutons
- un objet connexion
- éventuellement, une gestion d'erreur personnalisée
etc.
Je fais affaire avec l'éternelle question, comment faire en sorte que ces objets accessibles à chaque partie du système qui en ont besoin.
mon premier apporach, il y a plusieurs années a été de $demande mondiale qui contenait initialisé instances de ces classes.
global $application;
$application->messageHandler->addMessage("Item successfully inserted");
J'ai ensuite changé sur le pattern Singleton et d'une usine de la fonction:
$mh =&factory("messageHandler");
$mh->addMessage("Item successfully inserted");
mais je ne suis pas heureux avec cela. Les tests unitaires et d'encapsulation et deviennent de plus en plus important pour moi, et dans ma compréhension de la logique derrière globals/singletons détruit l'idée de base de la programmation orientée objet.
Ensuite il y a évidemment la possibilité de donner à chaque objet un certain nombre de pointeurs vers les objets d'assistance dont il a besoin, probablement la plus propre, d'économie des ressources et de test de manière conviviale, mais j'ai des doutes sur la facilité de maintenance de ce sur le long terme.
La plupart des frameworks PHP, j'ai cherché à utiliser le pattern singleton, ou des fonctions que l'accès aux objets initialisés. À la fois fine approches, mais comme je l'ai dit, je suis heureux avec aucun des deux.
Je voudrais élargir mon horizon sur quels modèles existent pas ici. Je suis à la recherche d'exemples, des idées et des pointeurs vers des ressources qui traitent de ce de un à long terme, dans le monde réel point de vue.
Aussi, je suis intéressé à entendre parler spécialisés, de niche ou de la plaine bizarre approches de la question.