Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
bonjour a tous
voila j'ai un petit souci avec les classes qui se trouvent dans le tutorial de simon mandy class MyAcl et My_Plugin_Auth. j'ai voulu les placer dans library/zend/classes et dans le boutstrap j'ai fait appel a ces classe
class MyAcl extends Zend_Acl et My_Plugin_Auth { public function __construct(Zend_Auth $auth) { parent::__construct(); $roleGuest = new Zend_Acl_Role('guest'); $this->add(new Zend_Acl_Resource('home')); $this->add(new Zend_Acl_Resource('news')); $this->add(new Zend_Acl_Resource('tutorials')); $this->add(new Zend_Acl_Resource('forum')); $this->add(new Zend_Acl_Resource('support')); $this->add(new Zend_Acl_Resource('admin')); $this->addRole(new Zend_Acl_Role('guest')); $this->addRole(new Zend_Acl_Role('member'), 'guest'); $this->addRole(new Zend_Acl_Role('admin'), 'member'); // Les invités peuvent uniquement voir le contenu $this->allow('guest', 'home'); $this->allow('guest', 'news'); $this->allow('guest', 'tutorials'); $this->allow('member', 'forum'); $this->deny('member', 'forum', 'update'); // Suppresion d'un privilège spécifique $this->allow('member', 'support'); $this->allow('admin'); // Accès sans aucune restriction // Ajout d'un nouvel objet ACL $this->allow('member', 'forum', 'update', new MyAcl_Forum_Assertion($auth)); } }
si quelqu'un peut m'aider ça serai sympa
merci a tous et bon code
Hors ligne
Voici une petite liste de conseille perso:
- Ne jamais mettre tes classes dans avec celle de zend (pas pratique en terme d'évolution)
- Mettre ces propres classes réutilisables dans un répertoir du même niveau que celui de zend
- Mettre ces classes propres à une application donnée dans le répertoire application/models
J'ai ainsi perso un arbo smililaire à cela:
library/ Zend/ Rx/ -> ma librarie maison :) application/ controllers/ models/ //ici mes classes spécifiques (donc dans ton cas je mettrai MyAcl ici car dépendant de ton appli) //... cf liens ci dessous
Je te conseille de (re)lire le quickstart mvc: http://framework.zend.com/manual/fr/zen … quickstart qui t'éclairera la dessus
Hors ligne
oui ne rien mélanger
library/ Zend/ Rx/ -> ma librarie maison :) application/ controllers/ models/ //ici mes classes spécifiques (donc dans ton cas je mettrai MyAcl ici car dépendant de ton appli) //... cf liens ci dessous
Pour ma part je regarde la nature des classes
il y a des classes générales date, hypercube, etc. qui ne sont pas propre à ton application mais qui peuvent être utiliser par d'autre applications.
dans ce cas je le splaces dans un dossier de library que je nomme en fonction de leur provenance.
library/ Zend/ Rx/ -> ma librarie maison :) Ibm/ -> ma librarie maison :) Phpclasses/ -> ma librarie maison :) Zfforum/ -> ma librarie maison :)
puis il y a celles qui son propre à l'application là je distingue leur nature
Classes metier
Classes de vue
Classes utilitaires
library/ Zend/ Rx/ -> ma librarie maison :) Ibm/ -> ma librarie maison :) Phpclasses/ -> ma librarie maison :) Zfforum/ -> ma librarie maison :) application/ controllers/ models/ views/ tools/
j'organise ces dossiers en sous dossier en fonction de l'utilité de la classe par exemple le helper qui sert à générer le menu de l'application est commun à toutes les vues il va donc dans application/views
mais le helper qui sert à générer l'aide à la saisie de la vue de gestion des client vas dans
application/views/client etc.
même fonctionnement pour le reste
donc les ACL pour moi sont dans
/application/metier/security/ ce dossier contenant les classes entrant dans la gestion de la sécurité.
A+JYT
Hors ligne
J'ai exactement la même approche que sekaijin.
Hors ligne
convert.php
classe qui contient
getUniversalUniqueId()
sqlToMyAppDate()
myAppto2SqlDate()
toLMmJVSD()
des chose comme ça des fonction utilitaire qui ne sont pas du métier qui servent à droite et à gauche et que je ne sais pas où mettre car elle ne concerne ni une ou des vues ni un ou plusieurs métier et qui ne sont pas des fonctions réutilisables mes spécifiques à cette application.
par exemple j'ai une application qui communique avec d'autre systèmes qui utilisent des chaînes comme
'02456' et 'DMJVS' qui en fait représentes des jours de la semaine Dimanche Mardi Jeudi Vendredi Samedi
bref je reçois la donnée sous la forme '1235' et je l'utilise la donner à un objet métier qui est défini dans l'API avec le format 'LMmJ'
je pourrais très bien mettre dans une classes qui surcharge l'objet métier mais c'est lourd pour si peu
Je pourrais aussi en faire une fonction dans mon contrôleur mais j'en ai besoin dans plusieurs module
Je pourrais en faire une classes spécifique et la mettre dans la librairy mais en fiat je ne la réutiliserait pas
bref le pot pourrit qu'un ne devrait jamais avoir car on a trop tendance à y fourguer tout et n'importe quoi.
Mais par expérience je sais que c'est aussi un bon incubateur. que d'appli en appli certaine chose comme ça qu'on ne devait pas réutiliser se retrouve recopiés et modifier jusqu'au jour où on ce dit qu'il y a peut être matière à
A+JYT
Hors ligne