Bon voilà je viens avec un projet et surtout beaucoup d'interrogations ;-) (je sais c'est sûrement évident voir très basic pour vous mais pour moi cela m'empêche d'aller de l'avant).
J'ai développé un outil de gestion de site en PHP que j'aimerais aujourd'hui transférer sur Zend Framework et profiter notamment du MVC.
J'ai lue pas mal de tuto et d'exemples mais j'avoue que je reste dubitatif (d'autant plus que j'ai pas mal de difficulté avec l'anglais).
Dans mon outil de gestion de site web j'ai plusieurs classes et script de fonction standards (ex. gestion accès db, gestion des droits d'accès, des mail, transformations chaînes de caractères, gestion de fichiers, gestion des uploads, templates, du code de confirmation de formulaire,...)
Bon j'imagine très bien remplacé ces fonctions par les classes du ZF ou développer des classes supplémentaires pour mes besoins.
Maintenant j'ai tout un ensemble de « packages » ou modules, basés sur ces fonctions, qui répondent a des besoins plus large, comme par exemple :
Gestion d'articles
Gestion de répertoire de sites
Gestion d'un forum
Gestion de petites annonces
Gestion d'un carnet d'adresses
Gestion des commentaires associés à n'importe quel élément d'un autre module
...etc.
Tous ces modules sont formés d'une classe qui comporte de manière standard un ensemble de méthodes : Affichage d'un élément, Affichage d'une liste d'éléments, Edition d'un élément, Sauvegarde d'un élément, Suppression d'un élément, Fonction de gestion des erreurs et d'une fonction Show (qui me sert de contrôleur et qui suivant les paramètres appel la bonne fonction). Chaque « action » est associé a un mini template et retourne le code html résultant (je ne souhaite pas forcément intégrer un parser sous ZF).
Mais déjà à ce niveau j'ai un problème...
Je ne sais pas exactement ou écrire mes modules avec MVC, j'imagine que ces classes ne seront probablement pas des librairies (quoique pourquoi pas ?) mais plutôt écrites au niveau des applications en tant que module avec vue, contrôleur et modèle.
Est ce juste ou alors une classes complète, comme par exemple « gestion d'articles » peut s'écrire comme une classe des librairies Zend ?
Si c'est juste se pose alors le problème de comment lier des modules entre-eux au niveau notamment des requêtes SQL, exemple module article avec module commentaire ? (surtout au niveau MVC)
J'ai également un module spécifique pour gérer la mise en page des pages html du site.
Je n'ai pas de template par page mais chaque page est défini par un header, un footer et un body qui comporte lui un assemblage des différent code html retourné par les modules qui composent la page.
Pour faire simple ce module lit une table MySQl, nommé "page", qui défini la structure de la page demandée et ses composants. Une page est définie par un template header, footer et un ensemble de composants. Chaque composant peut être une image, un texte, un fichier html ou l'appel à un module.
L'utilisateur peut ainsi assembler les différents modules et composer sa page html de manière très simple et sans aucun codage. Il a juste a désigner et ordonner les données et composants désirés dans sa page via une table SQL.
J'imagine que mon index.php n'instanciera qu'un module, en l'occurance celui de ma gestion de pages mais je vois pas comment ensuite ce dernier instanciera les autres composants et mergera les codes html résultants via MVC évidemment.
Dans tous les exemples que j'ai trouvé ils partent toujours d'une adaptation du fichier index.php de base mais comment ca se passe dans le cas d'un module ? (dans le répertoire application).
De plus chaque appel à un dispatch insère automatiquement le header.phtml et footer.phtml ce qui n'est pas mon cas. Comment un dispatch d'un module peut il appeler le dispatch d'autres modules ? mais aussi que seul le résultat cumulé intègre le header.phtml et footer.phtml ?
En gors en faite j'ai un peu de mal à comprendre l'organisation de tous mes éléments avec ZF (et également un peu de mal avec le vocabulaire utilisé pour comprendre de quoi il s'agit).
Merci de m'avoir lue et d'avance de vos réponses.
Partager