Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 28-06-2007 03:22:09

verboz
Membre
Lieu: France, Lille
Date d'inscription: 26-06-2007
Messages: 24
Site web

Votre avis sur l'architecutre modulaire et non modulaires

Bonjour tout le monde,
Est ce que vous êtes pour une architecture modulaire du style:
/application   
      /default/
         /controller/
        /views/
       /models/

     /module1/
         /controller/
        /views/
       /models/

Ou est ce que vous êtes pour une architecture classique
/application   
         /controller/
        /views/
       /models/

Quels sont les avantages de chacune architecture d'après vous? Dans quels types de projets vous préferiez l'une des architectures?

A vos claviers les Zendien smile

Cordialement

Dernière modification par verboz (28-06-2007 03:23:07)

Hors ligne

 

#2 28-06-2007 05:00:21

mohamed
Membre
Date d'inscription: 22-06-2007
Messages: 16

Re: Votre avis sur l'architecutre modulaire et non modulaires

salu
Ca dépend de la taille de ton projet, s'il est un gro projet je ferai la modulaire, sinon la non modulaire

Dernière modification par mohamed (28-06-2007 05:13:50)

Hors ligne

 

#3 28-06-2007 09:00:42

fizzbanana
Membre
Date d'inscription: 29-05-2007
Messages: 40

Re: Votre avis sur l'architecutre modulaire et non modulaires

c'est aussi possible de faire comme ça:

/application/
    /modules/
        /default/
            /controllers/
            /models/
            /views/
        /foo/
            /controllers/
            /models/
            /views/
        /bar/
            /controllers/
            /models/
            /views/

aprés dans index.php, vous pouvez faire simplement:

Code:

$frontController->addModuleDirectory('/path/to/application/modules');

comme ça il n'y a pas de besoin de créer un array avec module noms et paths pour controllers pour chaque module.

aussi, meme si vous creer une structure sans modules, le Zend Framework va supposer une module avec le nom 'default'. 

por verifier, dans un controller faire ça:

Code:

$request = $this->getRequest();
$module = $request->getModuleName();

plus de info sur Modules et Zend Framework:
http://framework.zend.com/manual/fr/zen … dular.html

Hors ligne

 

#4 28-06-2007 20:06:02

alien7
Membre
Date d'inscription: 29-04-2007
Messages: 447

Re: Votre avis sur l'architecutre modulaire et non modulaires

fizzbanana ->
Je suis en train d'essayer cette architecture, et ca ne marche pas pour moi, j'ai ce message d'erreur :

Code:

Fatal error: Uncaught exception 'Zend_Controller_Dispatcher_Exception' with message 'Invalid controller class ("Admin_IndexController")' in /home/gollum/web/www/library/Zend/Controller/Dispatcher/Standard.php:292 Stack trace: #0

Une idée du pourquoi ?
Merci


ZF 2.3 - Twitter Bootstrap 3.2
Local: Ubuntu  -> Apache2 2.4 - MariaDB 10 - PHP 5.6

Hors ligne

 

#5 28-06-2007 23:25:43

verboz
Membre
Lieu: France, Lille
Date d'inscription: 26-06-2007
Messages: 24
Site web

Re: Votre avis sur l'architecutre modulaire et non modulaires

Oui c'est normale,
Bon voilà, apparament tu as un module nomé Admin, donc tous tes controlleurs doivent porter le nom Module_IndexController et ainsi de suite.
Attention, le nom des controlleurs reste le meme cad IndexController, NomController....... mais le nom de la classe doit porter le nom du module avec.

J'espère que je me suis bien exprimé.
Cordialement

Hors ligne

 

#6 28-06-2007 23:37:20

alien7
Membre
Date d'inscription: 29-04-2007
Messages: 447

Re: Votre avis sur l'architecutre modulaire et non modulaires

Bien vu, bien vu oui c'est ca.
Oui toi tu as bien été clair, c'est la doc qui ne l'etait pas, enfin c'est peut etre moi qui ne l'est pas comrpris(doc anglais).

Un grand merci verboz

Il me plait de plus en plus ce framework


ZF 2.3 - Twitter Bootstrap 3.2
Local: Ubuntu  -> Apache2 2.4 - MariaDB 10 - PHP 5.6

Hors ligne

 

#7 28-06-2007 23:45:15

Yoteco
Nouveau membre
Date d'inscription: 24-04-2007
Messages: 6

Re: Votre avis sur l'architecutre modulaire et non modulaires

Perso j'utilise ça:

/application/
    /controllers/
    /models/
    /views/
    /module1/
        /controllers/
        /models/
        /views/
    /module2/
        /.../

Et dans le code tu fais simplement
$frontController->setControllerDirectory(array(
      'default' => './application/controllers',
      'page'    => './application/page/controllers'
));

Et quand tu met http://www.monsite.com/controller/action/ sa appelle le controller par défaut et si tu spécifie un module sa va dans les dossiers de module.

C'est le mieux je trouve car tu as un module "default" qui gère les autre modules, c'est ton CORE.

Hors ligne

 

#8 29-06-2007 00:58:54

verboz
Membre
Lieu: France, Lille
Date d'inscription: 26-06-2007
Messages: 24
Site web

Re: Votre avis sur l'architecutre modulaire et non modulaires

Oui je suis d'accord avec toi, la documentation n'est pas assez claire, plutot y'a pas bcp d'exemple et ça gène un peu mais bon, n'oublier pas que c'est un framework qui est encore à la version 1 et bcp de boite de développement ont peur de le déployer, donc y'a pas vaiment d'aide claire, tout le monde est entrain d'apprendre pour le moment c'est pour ça que tu trouveras bcp de façon de faire.

Bein autre aide que je peux te donner c'est: rejoint le channel IRC sur le serveur irc.freenode.net et entre dans le channel #zftalk, là tu pourras avoir l'aide nécéssaire.

Allez à+ et encore un grand merci à philippe et à tous les fondateurs de ce forum
Cordialement

Hors ligne

 

#9 08-01-2008 14:49:49

Geoffrey
Membre
Lieu: 63
Date d'inscription: 12-04-2007
Messages: 140
Site web

Re: Votre avis sur l'architecutre modulaire et non modulaires

Allez hop, je profite de ce vieux topic smile

Bonjour à tous

Voila, je veux regarder un peu cette histoire de module et je souhaiterai pouvoir utiliser les vues par défaut à l'intérieur de mes vues de chaque module.

Je m'explique, dans mon view/script/ actuel, j'ai un dossier _include qui contient des fichiers tableaux.inc.tpl, formulaire.inc.tpl ... (le contenu de ses fichiers smarty, sont des modèles de présentations qui doivent être les meme dans tout mon dév, defaut comme module). Du coup j'hésite entre ca :
/application
  /default
    /models
    /view
    /controllers
  /module1
    /models
    /view
    /controllers


ou :
/application
  /models
  /view
  /controllers
  /module1
    /models
    /view
    /controllers

C'est quoi le "plus mieux" propre et simple pour réutiliser des vues et des modèles aussi du coup car on peut avoir besoin de tables système un peu dans tous les modules

Geoffrey

Hors ligne

 

#10 08-01-2008 15:09:41

Damien
Membre
Lieu: Tassin la Demi Lune
Date d'inscription: 22-03-2007
Messages: 88

Re: Votre avis sur l'architecutre modulaire et non modulaires

Je cherche aussi à mettre en place une telle structure pour une application existante.

Ancienne structure :
/applis/controllers/xxxController.php
/applis/models/nomModule/xxxModel.php
/applis/views/nomModule/xxx.php
/commun/Zend
...

Nouvelle structure désirée :
/applis/modules/default
/applis/modules/mod1
/applis/modules/mod2 ...

Je ne trouve pas vraiment d'article simple permettant de me faire une idée réelle de l'ampleur de la tâche que je dois accomplir.

La raison pour laquelle je voudrais changer de structures, c'est que quand je dois modifier/corriger un "module", je dois me farcir toute l'arborescence de l'applis pour retrouver tous mes petits. Par exemple, je veux ajouter une variables à afficher dans une vue, je dois d'abord modifier le controleur pour ajouter la nouvelle variable et ensuite rechercher la vue correspondante pour prendre en compte la modif.

Une précision : j'ai 64 controlleurs et autant de rep /applis/models et /applis/views

Hors ligne

 

#11 08-01-2008 18:59:00

Geoffrey
Membre
Lieu: 63
Date d'inscription: 12-04-2007
Messages: 140
Site web

Re: Votre avis sur l'architecutre modulaire et non modulaires

Allez, après y avoir passé une grosse partie de l'après-midi, voici ma réflexion quand à la gestion modulaire d'une appli.
Je précise que j'utilise Smarty pour la couche V, je ne sais pas si ca change grand chose, mais en tout cas pour moi ca rajoute une petite prise de tête supplémentaire lol.

L'arborescence :
Au final, j'ai choisi çà :
/application
  /default
    /controllers
    /models
    /views
  /module01
    /controllers
    /models
    /views
  /modules02
    /controllers
    /models
    /views
/library
/public
/smarty
  /cache
  /plugins
  /configs
  /templates_c

Bon j'ai un peu détaillé, mais le dossier plugins de smarty est important.

Alors voilà mon idée :
Pour les modèles, dans le bootstrap, je fais un path sur le models de defaut uniquement

Code:

set_include_path('.'
    . PATH_SEPARATOR . '../application'
    . PATH_SEPARATOR . '../application/default/models/'
    . PATH_SEPARATOR . '../library'
    . PATH_SEPARATOR . get_include_path()

Après dans les modules, j'appelle mes classes modèles de la manière suivante :

Code:

Zend_Loader::loadClass('MaClasse', 'modules/module01/models');

ou s'il s'agit d'une classe commune qui est dans default/models

Code:

Zend_Loader::loadClass('MaClasse');

Pour les vues, elles sont définies dans chaques modules et pour mes morceaux de script commun, je cré tout simplement des plugins Smarty, ainsi j'ai un plugin header, un footer, un tableau, un formulaire, ...

Voilà, qu'en pensez-vous, et surtout existe quelque chose en natif, qui me permet d'éviter de mettre en place tout ceci ?

Geoffrey

Hors ligne

 

#12 08-01-2008 19:07:08

Phoenix17
Membre
Lieu: Nancy
Date d'inscription: 09-04-2007
Messages: 73
Site web

Re: Votre avis sur l'architecutre modulaire et non modulaires

Donc, grossomodo, ta réflexion ressemble extremement à ça :

http://framework.zend.com/manual/fr/zen … dular.html

(hormis smarty)

Hors ligne

 

#13 08-01-2008 23:08:22

Geoffrey
Membre
Lieu: 63
Date d'inscription: 12-04-2007
Messages: 140
Site web

Re: Votre avis sur l'architecutre modulaire et non modulaires

Phoenix17 a écrit:

Donc, grossomodo, ta réflexion ressemble extremement à ça :

http://framework.zend.com/manual/fr/zen … dular.html

(hormis smarty)

Oui bien sûr, mais la doc est extrêmement flou. On se retrouve avec un tas de module indépendant, moi ce qui me posait problème, c'est comment utiliser des vues et de modèles communs, la doc de zend ne dit rien la-dessus (ou je ne l'ai pas trouvé). J'ai l'impression que les modules sont quasiment gérés comme des mini-sites.

Geoffrey

Hors ligne

 

#14 09-01-2008 09:09:40

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: Votre avis sur l'architecutre modulaire et non modulaires

Salut
j'utilise ça

Code:

/application
  /default
    /controllers
    /models
    /views
  /module01
    /controllers
    /models
    /views
  /modules02
    /controllers
    /models
    /views
/generic
  /module1
    /controllers
    /models
    /views
  /module2
    /controllers
    /models
    /views
  /module3
    /controllers
    /models
    /views
/library
/public

je place mes module applicatif dans l'application.
mais les module purement générique (ceux que j'utilise dans toutes ou presque mes appli) je les place dans un dossier au même niveau que application
ces modules sont gérés dans des projets séparé de l'application, c'est le cas par exemple de login qui est un module qui prends en charge la phase de login
mais aussi de usermanager qui permet de gérer les utilisateur groupe de travail role et profiil

je ne mets comme module dans mon application que ceux qui sont propre à l'application

si avec le temps il deviennent réutilisables et généralisable il feront l'objet d'un projet de généralisation et migreront dans le dossier générique

cela permet une répartition du travail en équipe plus facile.

j'utilise un fichier de configuration qui liste les module générique à utiliser et ajoute seul les éléments nécessaire au boutstrap

je peux donc packager un sur ensemble de ZF contenabt ZF les lib maison et les modules générique qui sert de point de départ pour le développement d'une application.
il l'application nécessite un login il suffit de le dire dans le fichier de configuration. de même si l'application gère elle même ses utilisateurs. etc.

A+jyt

Hors ligne

 

#15 09-01-2008 09:34:22

Geoffrey
Membre
Lieu: 63
Date d'inscription: 12-04-2007
Messages: 140
Site web

Re: Votre avis sur l'architecutre modulaire et non modulaires

Très intéressant, je vais me pencher dessus pour voir comment adapter une telle structure à mon projet

En fait, dans generic, tu te fais un "sous-framework" en quelque sorte ...


Merci

Hors ligne

 

#16 09-01-2008 17:13:27

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: Votre avis sur l'architecutre modulaire et non modulaires

oui dans généric je mets des module entièrement réutilisable d'une application sur l'autre.
login usermanager
exporter

chaque module se comporte comme une mini application embarquée.
avec du paramétrage

A+JYT

Hors ligne

 

#17 02-01-2010 12:40:03

Ph
Membre
Date d'inscription: 02-01-2010
Messages: 40

Re: Votre avis sur l'architecutre modulaire et non modulaires

Bonjour,
Désollé de remonter ce vieux sujet mais c'est celui qui semble le mieux correspondre à mon problème.

Je dev en PHP depuis quelques années (J'ai ma certif Zend et tout et tout) et j'ai décidé de mettre au ZF après avoir été grand utilisateur du Framework-fait-maison-dans-le-garage.
Je l'utilise depuis 2 mois en version 1.7.0 et 1.9.6, j'ai du lire 3 fois la doc Zend, 1 fois Bien développer en PHP de Julien Pauli et Guillaume Ponçon (J'espère qu'ils ont pu acheter une bièrre avec les euros liés à cet achat), et x pages de Faq, tutoriels, codes libres.

Je voudrais faire un projet d'une grande modularité et est donc décidé de customisé ZF de la manière suivante :

Code:

/application
  /models (Accessible dans toute l'appli)
  /modules
    /modules01
    /modules02
        barController.php
        fooController.php
        /configs
        /layout
        /bar
            monAction.phtml
            monAction.json.phtml
            monAction2.phtml
            monAction2.json.phtml
        /foo
            monAction.phtml
            monAction.json.phtml
            monAction2.phtml
            monAction2.json.phtml
    /modules03
    /modules04   
/library
    /MaLib qui étends Zend_Controller_Action , Zend_Form, des Helpers ...
    /Zend 
/public

Je remercie toute personne qui m'aiderait car 15h que j'essaye de faire marcher une telle architecture et je n'arrive à... rien... (vraiment rien).

L'idée du projet est que moi même aussi bien que n'importe qui puisse rajouter un module, son/ses controlleurs, sa config, ses vues, ses layouts. Par une mises dans le dossier /application/modules/ et l'activé depuis une interface graphique proposée dans un panneau d'administration qui faire partie du 'core' de l'application.

Le framework ainsi "implémenté" se charge de fournir via  MaLib_Controller_Action, des interfaces pour inclure les modèles, modifier les layouts, rendre une réponse html ou jsont.
Un système utilisant les plugin et Zend_ACL se charge de vérifier qu'un module est activé et que l'utilisateur à les droits d'y acceder.

Mon premier problème c'est d'atteindre mon module quand je tape l'url.

Code:

 
require_once 'Zend/Controller/Front.php';  
$front =   Zend_Controller_Front::getInstance();
$front->setModuleControllerDirectoryName('');
$front->addModuleDirectory(APPLICATION_PATH.'/modules');

Si je tape dans mon url http://monsite.tld/
Je devrais interoger : /application/modules/default/IndexController.php
Mais j'ai une page blanche sad

[02-Jan-2010 12:29:26] PHP Fatal error:  Uncaught exception 'Zend_Controller_Dispatcher_Exception' with message 'Invalid controller specified (error)' in /var/www/intraweb/library/Zend/Controller/Dispatcher/Standard.php:242
Stack trace:
#0 /var/www/intraweb/library/Zend/Controller/Front.php(946): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
#1 /var/www/intraweb/library/Zend/Application/Bootstrap/Bootstrap.php(77): Zend_Controller_Front->dispatch()
#2 /var/www/intraweb/library/Zend/Application.php(358): Zend_Application_Bootstrap_Bootstrap->run()
#3 /var/www/intraweb/public/index.php(36): Zend_Application->run()
#4 {main}
  thrown in /var/www/intraweb/library/Zend/Controller/Dispatcher/Standard.php on line 242

Any idea ?

Je vous remercie par avance, je présenterais mon projet quand il sera plus avancé plus tard wink

Je commence à trainner sur #zftalk-fr soir & week-end smile

Edit: J'avais lu une histoire de bootstrap par module, est ce nécéssaire ?

Dernière modification par Ph (02-01-2010 12:49:58)

Hors ligne

 

#18 02-01-2010 13:43:46

Ph
Membre
Date d'inscription: 02-01-2010
Messages: 40

Re: Votre avis sur l'architecutre modulaire et non modulaires

Bon j'ai ma solution , en fait dans le fichier de config livré avec zf (dans le ZfQuickStart ou avec le zf.sh ) on a une ligne de commande à commenter :

resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"

C'était con ! Mais bon c'était à savoir ! Enfin c'est pas là où j'ai perdu mes heures, j'ai surtout perdu mes heures pour les lignes de codes suivantes qui n'ont pas trouvées leur réponse :

Code:

<?php 
/**
 * @see Zend_Controller_Action
 */
require_once 'Zend/Controller/Action.php';

abstract class Malib_Controller_Action extends Zend_Controller_Action{
    
    public function init(){
        parent::init(); // On ne sait jamais pour le futur...
        /*[...]*/
        $viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer($this->view);
        $viewRenderer->setViewBasePathSpec(':moduleDir/:module/:controller/');
        Zend_Controller_Action_HelperBroker::addHelper($viewRenderer);
    }

        /*[...]*/
}
?>

Ces lignes sont font donc parti de ma librairie, elles servent à modifier le répertoire de vue...
Mais c'est un echec total sad

Message: script 'index/index.phtml' not found in path (/var/www/intraweb/application/modules/views/scripts/)
Stack trace:

#0 /var/www/intraweb/library/Zend/View/Abstract.php(827): Zend_View_Abstract->_script('index/index.pht...')
#1 /var/www/intraweb/library/Zend/Controller/Action/Helper/ViewRenderer.php(903): Zend_View_Abstract->render('index/index.pht...')
#2 /var/www/intraweb/library/Zend/Controller/Action/Helper/ViewRenderer.php(924): Zend_Controller_Action_Helper_ViewRenderer->renderScript('index/index.pht...', NULL)
#3 /var/www/intraweb/library/Zend/Controller/Action/Helper/ViewRenderer.php(963): Zend_Controller_Action_Helper_ViewRenderer->render()
#4 /var/www/intraweb/library/Zend/Controller/Action/HelperBroker.php(277): Zend_Controller_Action_Helper_ViewRenderer->postDispatch()
#5 /var/www/intraweb/library/Zend/Controller/Action.php(523): Zend_Controller_Action_HelperBroker->notifyPostDispatch()
#6 /var/www/intraweb/library/Zend/Controller/Dispatcher/Standard.php(289): Zend_Controller_Action->dispatch('indexAction')
#7 /var/www/intraweb/library/Zend/Controller/Front.php(946): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
#8 /var/www/intraweb/library/Zend/Application/Bootstrap/Bootstrap.php(77): Zend_Controller_Front->dispatch()
#9 /var/www/intraweb/library/Zend/Application.php(358): Zend_Application_Bootstrap_Bootstrap->run()
#10 /var/www/intraweb/public/index.php(37): Zend_Application->run()
#11 {main}
 

J'espère que mon post aura aider d'autres architectes wink.

Dernière modification par Ph (02-01-2010 16:34:52)

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages