devlop78
Invité n'ayant pas de compte PHPfrance
07 févr. 2011, 02:16
Perso, dans l'appli en cours, je fais quasi tout en statique. Avant, tout en singleton. Le temps m'amène toujours à la réflexion, et le statique chez moi est à priori vite mal employé. Il est vrai que ce que je concois n'a pas pour objet d'être réutilisé, et en soit, les objets peuvent vite être remplacés par des groupes de méthodes (une classe quoi ^^). Mais cela se rapproche plus à un dossier dans lequel on met des dossiers, qu'à un réel développement objet. D'autre part, je souffre de l'absence de namespace, et je pense à terme m'orienter vers la technique de Zend, qui est, si je ne m'abuse, d'utiliser le underscore comme séparateur de namespace/classe. C'est assez lourd, mais bon ... En terme d'objet, le Singleton me parait très approprié, car contrairement au statique, l'objet, bien qu'unique, a toute la vie d'un objet : constructeur, etc. Actuellement j'ai pas mal de classe avec une méthode init() que j'assimile à un constructeur mais statique. c'est en gros une méthode qui devrait être appelée par php lors de démarrage du script (en JAVA, il me semble que init() existe ...) ... Bref. Je réfléchis et l'idée serait peut-être la construction d'un "arbre" de type :
$template->menu->items ou plus précisément Core::getInstance()->template->menu->items (car malheureusement, une variable n'est pas disponible aux enfants), ou Registry::get('template')->menu->items. Je pense que ici, le premier est mieux.
D'ailleurs c'est toujours mieux, encore une fois pas dans mon cas, mais en général, d'avoir qqchose de type $Core->template car au fond ce n'est pas aux autres objets de s'inquiéter de qui est $template à partir du moment où on en connait les propriétés et méthodes. Je dis peut-être une bêtise, mais on pourrait avoir plusieurs classes de gestion de template et seul celui qui a la responsabilité de la gérer, est responsable de la choisir. Alors que actuellement, j'ai une classe Template, et tout le monde y accède de façon statique, parce que moi dans mon appli je sais que elle me convient, mais dans une autre appli, ça ne serait pas forcément intéressant. Je pense aussi que la méthode est mieux que l'utilisation du Registry, car on a une hierarchie définie, mais on pourrait imaginer que Template est quand même une grande fille ^^ représentant la VUE, et déterminer trois grands parents au lieu de 1 : Core (controlleur), Template (Vue) et Tables (Model). Si ce n'est qu'au final, le grand chef reste le controlleur puisque c'est lui qui démarre l'application, et que je n'ai aucune classe Tables puisque mes classe de table sont indépendantes. Là, pour elles, cela reste un grand mystère.
J'ai pensé aussi, car je développe pas mal en encaspsulation, à ne permettre que l'accessibilité aux propriétés d'un objet que si la propriété est un objet, et de ne permettre que la lecture seule. C'est quand même mieux que Core::getInstance()->getTemplate->getMenu->getItems
Pour bien faire, une propriété "parent" devrait aussi exister, bien qu'un fils n'est pas forcément censé savoir qui est son père, là, de toutes façons, il le sait ...
Pour les Namespace, je devrais avoir quelque chose comme
application_Core (Namespace application, classe Core)
application_template_Template, application_template_menu_item, application_template_menu_group etc
Bref, je trouve que l'on souffre souvent, en tant que développeur PHP, d'un manque réel de connaissances à ce sujet, et il est souvent nécessaire, personnellement, à mon évolution, d'aller voir les autres langages beaucoup plus objets, pour en apprendre davantage. Par contre, trop d'objet tue l'objet : un développement à usage unique ne devrait pas être aussi objet qu'un développement à réutilisation comme DOMDocument, pour lequel on est content que tout soit objet.
Pour ce qui est de Registry, je l'ai utilisé dans le début de refonte d'une application, il répond bien au problème de portabilité des variables (tout confondu) mais la méthodologie en elle-même reste à revoir. Bref, je me démerde très bien dans le développement d'une application, sans me vanter, mais de nombreux points sont totalement à apprendre.
Modifié en dernier par devlop78 le 07 févr. 2011, 02:41, modifié 1 fois.