Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1438 connectés 

 


 Mot :   Pseudo :  
  Aller à la page :
 
 Page :   1  2  3  4  5  ..  60  61  62  63  64  65  66  67
Auteur Sujet :

Model View Controller (MVC) - Architecture des applications PHP

n°2041064
drasche
Posté le 09-12-2010 à 14:56:11  profilanswer
 

Reprise du message précédent :

MEI a écrit :


Non la vue ne fait que l'affichage.
La couche service s'occupe des échanges d'informations et des traitements.
 
EDIT : on peut imaginer ça :
 
(1) Modèle
(2) Service
(3-a) Contrôleur
(4-a-a) Vue "HTML"
(4-a-b) Vue "XML"
(4-a-c) Vue "PDF"
(3-b) Web Service
 
Ça permet de factoriser au mieux le code. I.e. tu veux permettre une impression PDF de la liste des commandes du client, pas de soucis, suffit de faire une vue "PDF" qui formatera les données différemment.


Webservice, c'est aussi du MVC, c'est juste que le dialogue est un peu différent. Et vire ton point (2). Les mécanismes de persistance des données sont intégrés au modèle.


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
mood
Publicité
Posté le 09-12-2010 à 14:56:11  profilanswer
 

n°2041070
skeye
Posté le 09-12-2010 à 15:01:18  profilanswer
 

MEI a écrit :


Liens vers un PPT qui explique un peu :
http://www.slideshare.net/weieroph [...] shop-dpc09
 
Par contre, c'est TRES orienté Zend Framework, et ça reste, même pour du Zend Framework, pas forcement l'utilisation la plus courante en fait (enfin par rapport à la doc. ou les livres sur le Zend Framework on va dire).


C'est exactement ce que je disais. Quiconque ne fait pas ça dans son modèle n'a pas une réelle abstraction entre le modèle et le reste. Ca n'a rien à voir avec une couche à part, c'est le modèle. Le modèle n'est pas seulement l'accès à la base de données.


---------------
Can't buy what I want because it's free -
n°2041075
skeye
Posté le 09-12-2010 à 15:06:47  profilanswer
 

MEI a écrit :


(1) Modèle
(2) Service
(3-a) Contrôleur
(4-a-a) Vue "HTML"
(4-a-b) Vue "XML"
(4-a-c) Vue "PDF"
(3-b) Web Service

 

J'avais raté ton edit.[:dawak]
...et non, non et non.[:dawao]

 

(1) Modèle
(2) Contrôleur
(3) Vue

 

C'est tout. Que ta vue sorte du html, du pdf ou un document word tout le monde s'en branle, c'est interne à la vue.
Que ton modèle fournisse une interface publique qui sert en interne de couche d'abstraction, c'est normal et tout le monde s'en fout aussi.

 


Message édité par skeye le 09-12-2010 à 15:07:02

---------------
Can't buy what I want because it's free -
n°2041081
MEI
|DarthPingoo(tm)|
Posté le 09-12-2010 à 15:12:12  profilanswer
 

Ce que je veux dire, c'est que pour un même contrôleur tu peut avoir plusieurs vue différentes.
 
Rien n'interdit que pour l'action "listeCommandes" du contrôleur "client" tu ai plusieurs vue différentes.
Cas typique une vue "Web" et une vue "Mobile" par exemple.
 
C'est certes au front controller de géré ça, mais c'était pour illustrer la possibilité.


---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
n°2041084
skeye
Posté le 09-12-2010 à 15:17:12  profilanswer
 

MEI a écrit :

Ce que je veux dire, c'est que pour un même contrôleur tu peut avoir plusieurs vue différentes.
 
Rien n'interdit que pour l'action "listeCommandes" du contrôleur "client" tu ai plusieurs vue différentes.
Cas typique une vue "Web" et une vue "Mobile" par exemple.
 
C'est certes au front controller de géré ça, mais c'était pour illustrer la possibilité.


 
 
Il faut raisonner en termes de couches...tu te réfères à un type d'implémentation particulier, là, ça complique la discussion.


---------------
Can't buy what I want because it's free -
n°2041336
mobil12
Posté le 10-12-2010 à 14:39:45  profilanswer
 

mhhh je vois que ca suscite le debat, ce n'etait peut etre pas une question si stupide...
 
ce que je comprends de vos ecrits.  
 
le modele , c'est bien le traitement .
par traitement la plupart d'entre vous auront compris , je voulais dire les operations en dehors de l'acces aux données.  
par exemple dans le bete cas d'une zone membre, le modele contiendrait les fonctions ajouter_user,delete_user ect.  
par traitement j'entends qu'il y a avant d'acceder a la base de données , un certain nb d'operations a effectuer, comme de verifications  des champs fournis, verification d'existence du membre (pour ne pas l'ecraser ) etc.  
 
pour moi je comprends donc , non pas 3 mais 4 couches :  
M V C et acces a la bdd . (je tiens a separer l'acces aux données car mon projet actuel pourra travailler soit sur xml , soit sur sql. je pense que dans ce cas la , il est intelligent de sortir l'acces aux données du modele.  
 
etes vous d'accord?  
 
grand merci.
 
ps;  
pour preciser l'objet de mon message et l'incomprehension initiale:  
tous les tutos que j'ai vu (devellopez, sdz etc, ) sur le mvc parlent de la gestion d'un espace membre , evidemment comme il s'agit d'un tuto et non pas de tp, les codes sont simplifiés a l'extreme et surtout toutes les fonctions ne sont pas implémentées.  
 
du coup dans ces tutos les seules choses que l'on voit dans le modele ,ce sont en gros des requetes sql.  
d'ou ma confusion.

n°2041341
FlorentG
Unité de Masse
Posté le 10-12-2010 à 15:04:48  profilanswer
 

mobil12 a écrit :

par traitement j'entends qu'il y a avant d'acceder a la base de données , un certain nb d'operations a effectuer, comme de verifications  des champs fournis, verification d'existence du membre (pour ne pas l'ecraser ) etc.


Ça fait aussi partie du modèle. Il peux proposer des fonctions genre validate_user & check_user.

n°2041343
mobil12
Posté le 10-12-2010 à 15:08:09  profilanswer
 

FlorentG a écrit :


Ça fait aussi partie du modèle. Il peux proposer des fonctions genre validate_user & check_user.


 
haaaa attention  
 
la tu me reconfuses....  
 
je n'aurai pas dit ca fait partie du modele mais C'EST le modele

n°2041345
MEI
|DarthPingoo(tm)|
Posté le 10-12-2010 à 15:17:21  profilanswer
 

FlorentG a écrit :


Ça fait aussi partie du modèle. Il peux proposer des fonctions genre validate_user & check_user.


Ca dépends quelles validations.
 
Si c'est des validation d'intégrité oui, mais si c'est une validation type champs obligatoire, champs nécessaires si tel radio est sélectionnée, ça non c'est au form de le faire (donc au niveau du contrôleur).
 
Avec  Zend Framework on ce genre de template assez couramment :

Code :
  1. public creerclientAction() {
  2.     $form = new Form_Client_Creer();
  3.     if ($this->_request->isPost()) {
  4.         $post = $this->_request->getPost();
  5.         if ($form->validate($post)) { // le form est valide => on a tout les champs requis, toutes les données sont cohérentes par rapport à nos contraintes
  6.              $client = new Model_Client($post); // le constructeur va utiliser les setters
  7.              if ($client->save()) {
  8.                  // redirection
  9.              } else {
  10.                  // afficher erreur du traitement
  11.              }
  12.         } else {
  13.             // afficher erreur de validation
  14.         }
  15.         $form->populate($post);
  16.     } else {
  17.         // code lors de premier affichage du formulaire.
  18.     }
  19. }


 
EDIT :
Approche Service :

Code :
  1. public creerclientAction() {
  2.     $form = new Form_Client_Creer();
  3.     if ($this->_request->isPost()) {
  4.         $post = $this->_request->getPost();
  5.         $facadeClient = new Service_Client();
  6.         if ($facadeClient->creerClient($post)) {
  7.             // redirection
  8.         } else {
  9.             // afficher erreurs
  10.         }
  11.         $form->populate($post);
  12.     } else {
  13.         // code lors de premier affichage du formulaire.
  14.     }
  15. }


Message cité 1 fois
Message édité par MEI le 10-12-2010 à 16:10:29

---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
n°2041349
skeye
Posté le 10-12-2010 à 15:27:10  profilanswer
 

mobil12 a écrit :


pour moi je comprends donc , non pas 3 mais 4 couches :  
M V C et acces a la bdd . (je tiens a separer l'acces aux données car mon projet actuel pourra travailler soit sur xml , soit sur sql. je pense que dans ce cas la , il est intelligent de sortir l'acces aux données du modele.


 
Non. L'accès aux données fait toujours partie de la couche Modèle. Cette dernière contiendra une "sous-couche" d'abstraction / d'interface publique (la couche "service" de MEI), et en-dessous autant de "sous-couches" d'accès aux sources de données que tu veux.


---------------
Can't buy what I want because it's free -
mood
Publicité
Posté le 10-12-2010 à 15:27:10  profilanswer
 

n°2041351
FlorentG
Unité de Masse
Posté le 10-12-2010 à 15:30:15  profilanswer
 

MEI a écrit :

Ca dépends quelles validations.


Effectivement [:romf]
 
 

MEI a écrit :

Si c'est des validation d'intégrité oui, mais si c'est une validation type champs obligatoire, champs nécessaires si tel radio est sélectionnée, ça non c'est au form de le faire (donc au niveau du contrôleur).


Je dirais que pour le type "champ obligatoire", ça fait aussi partie du modèle, car étant de l'intégrité aussi [:petrus dei]. Enfin dépend aussi du champ :D
 
Genre pour un formulaire d'inscription avec login & pass. Le modèle veut un nom d'utilisateur et un mot de passe (avec des contraintes potentielles genre taille min & max, etc.). Le formulaire lui voudra un deuxième mot de passe de confirmation égal au premier.
 
On aurait donc plusieurs "étages" de validations : le premier niveau formulaire, le deuxième niveau modèle.

n°2041355
skeye
Posté le 10-12-2010 à 15:34:05  profilanswer
 

FlorentG a écrit :


On aurait donc plusieurs "étages" de validations : le premier niveau formulaire, le deuxième niveau modèle.


 
Non, le premier c'est dans la vue.[:dawao]


---------------
Can't buy what I want because it's free -
n°2041357
FlorentG
Unité de Masse
Posté le 10-12-2010 à 15:43:18  profilanswer
 

skeye a écrit :

Non, le premier c'est dans la vue.[:dawao]


C'est ce que j'entendais par formulaire en fait [:romf]

n°2041358
skeye
Posté le 10-12-2010 à 15:44:13  profilanswer
 

FlorentG a écrit :


C'est ce que j'entendais par formulaire en fait [:romf]


 
Alors t'en as deux à ton niveau "formulaire".:D Un coté client, un coté serveur.:D


---------------
Can't buy what I want because it's free -
n°2041359
skeye
Posté le 10-12-2010 à 15:54:12  profilanswer
 

http://thedailywtf.com/Articles/Th [...] aspx#PPic2
 [:edhelas]


---------------
Can't buy what I want because it's free -
n°2041360
FlorentG
Unité de Masse
Posté le 10-12-2010 à 15:54:43  profilanswer
 

Wrong thread [:petrus dei]

n°2041361
skeye
Posté le 10-12-2010 à 15:56:26  profilanswer
 

oui.:D


---------------
Can't buy what I want because it's free -
n°2041366
MEI
|DarthPingoo(tm)|
Posté le 10-12-2010 à 16:19:42  profilanswer
 

skeye a écrit :


Non. L'accès aux données fait toujours partie de la couche Modèle. Cette dernière contiendra une "sous-couche" d'abstraction / d'interface publique (la couche "service" de MEI), et en-dessous autant de "sous-couches" d'accès aux sources de données que tu veux.


 
Non, ça c'est TON cas particulier. Mais en MVC rien n'est défini. On peux avoir des modèles qui n'inclus pas la persistance, et n'en sont même pas conscient.
Exemple lorsque l'on utilise un ORM.
 
Dans JDO par exemple (certes c'est du Java), on écrit le modèle de façons standard, getter/setters/méthodes. Après c'est un fichier XML de définition du mapping objet-relationnel et une moulinette post-compilation qui modifie le byte-code de l'objet.
 
Mais en pratique dans le code on a ce qu'ils appelles un PersistenceManager et qui lui gérera les objets persistants.

Code :
  1. // Cas Zend DB par exemple, ou "ORM" simple perso :
  2. $mon_objet = new Mon_Object();
  3. $mon_objet->save();
  4. // Cas JDO :
  5. $pm = new PersistenceManager();
  6. $mon_objet = new MonObjet();
  7. $pm->makePersistent($mon_object);


 
Ce code serait donc dans le contrôleur typiquement, et dans un cas la logique est dans le modèle (où un classe mère du modèle), dans l'autre dans une classe présente dans la library, et ce n'est même qu'une classe technique comme un autre finalement.


---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
n°2041368
skeye
Posté le 10-12-2010 à 16:25:20  profilanswer
 

MEI a écrit :

Non, ça c'est TON cas particulier. Mais en MVC rien n'est défini.

 

En MVC tout fait partie de M, V ou C, point barre. Arrêtez d'inventer des couches qui n'existent pas.
Si tu as de la persistance, c'est dans le modèle. C'est tout.
Qu'il y ait de l'abstraction dans chaque couche c'est très possible et même probablement souhaitable. Mais ça n'en fait pas un PSMFCCVHPX. C'est toujours M, V, et C, ou tu ne fais plus du MVC.

Message cité 2 fois
Message édité par skeye le 10-12-2010 à 16:26:14

---------------
Can't buy what I want because it's free -
n°2041370
FlorentG
Unité de Masse
Posté le 10-12-2010 à 16:29:11  profilanswer
 

skeye a écrit :

Si tu as de la persistance, c'est dans le modèle. C'est tout.


This.

 

MVC n'est pas une design pattern en soit, elle définit juste l'organisation générale d'un point de vue assez haut. Libre à tout d'implémenter M, V ou C différemment. Un modèle peut ainsi être splitté en plusieurs composants.

 

Pour reprendre l'exemple de la validation de données, on pourrait avoir une classe model_user qui propose une méthode check_user. Mais on pourrait très bien aussi carrément avoir un objet à part entière qui ferait ça, genre user_checker. Ce dernier ferait conceptuellement partie du modèle, même s'il est séparé de l'objet assurant la persistance.


Message édité par FlorentG le 10-12-2010 à 16:29:20
n°2041374
MEI
|DarthPingoo(tm)|
Posté le 10-12-2010 à 16:40:37  profilanswer
 

skeye a écrit :


 
En MVC tout fait partie de M, V ou C, point barre. Arrêtez d'inventer des couches qui n'existent pas.
Si tu as de la persistance, c'est dans le modèle. C'est tout.
Qu'il y ait de l'abstraction dans chaque couche c'est très possible et même probablement souhaitable. Mais ça n'en fait pas un PSMFCCVHPX. C'est toujours M, V, et C, ou tu ne fais plus du MVC.


Une classe purement technique type parsing de XML tu met ça dans le modèle toi ?
 
Pour moi c'est simplement une classe technique => Library, et donc tout n'est pas obligatoirement MVC.


---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
n°2041379
mobil12
Posté le 10-12-2010 à 16:49:38  profilanswer
 

MEI a écrit :


Une classe purement technique type parsing de XML tu met ça dans le modèle toi ?
 
Pour moi c'est simplement une classe technique => Library, et donc tout n'est pas obligatoirement MVC.


 
voila .  
la on commence a toucher le noeud de ma question ....

n°2041380
skeye
Posté le 10-12-2010 à 16:52:21  profilanswer
 

MEI a écrit :


Une classe purement technique type parsing de XML tu met ça dans le modèle toi ?
 
Pour moi c'est simplement une classe technique => Library, et donc tout n'est pas obligatoirement MVC.


 
C'est une bibliothèque complètement externe à l'application proprement dite, ça.  
Sinon tu peux aussi essayer de faire rentrer les fonctions natives du langage dans la boite tant que t'y es...:o


---------------
Can't buy what I want because it's free -
n°2041383
MEI
|DarthPingoo(tm)|
Posté le 10-12-2010 à 16:57:47  profilanswer
 

skeye a écrit :


 
C'est une bibliothèque complètement externe à l'application proprement dite, ça.  
Sinon tu peux aussi essayer de faire rentrer les fonctions natives du langage dans la boite tant que t'y es...:o


Ah donc pour toi l'application c'est les vues/contrôleurs/modèles, mais pas le framework autour qui fait tourner tout ça ?
Donc en gros tout est MVC sauf ce qui ne l'ai pas... :p
 


---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
n°2041384
skeye
Posté le 10-12-2010 à 17:03:04  profilanswer
 

MEI a écrit :


Ah donc pour toi l'application c'est les vues/contrôleurs/modèles, mais pas le framework autour qui fait tourner tout ça ?
Donc en gros tout est MVC sauf ce qui ne l'ai pas... :p

 


 

Le framework ne fait pas partie de ton appli. C'est un pré-requis à son bon fonctionnement, comme n'importe-quelle lib que tu utilises.
Si tu codes pour windows, non, l'API win32 entière ne fait pas partie de ton appli.

 


...Et ta manière de mettre Vue/Controleur/Modèle au pluriel m'horripile - et caractérise très bien ta façon de considérer uniquement une certaine implémentation du truc.[:dawao]


Message édité par skeye le 10-12-2010 à 17:03:26

---------------
Can't buy what I want because it's free -
n°2041385
skeye
Posté le 10-12-2010 à 17:04:28  profilanswer
 

Si tu ne comprends déjà pas la distinction entre ce qui est ton appli et ce qui fait partie d'une lib externe on risque pas de se comprendre, hein...


Message édité par skeye le 10-12-2010 à 17:04:47

---------------
Can't buy what I want because it's free -
n°2041388
skeye
Posté le 10-12-2010 à 17:07:12  profilanswer
 

...et avant que tu demandes, non, l'ORM ne fait pas partie de ton appli non plus.
Tout ce que tu fais avec, si. Et c'est dans le Modèle.


---------------
Can't buy what I want because it's free -
n°2041413
gatsu35
Blablaté par Harko
Posté le 10-12-2010 à 18:06:22  profilanswer
 

MEI a écrit :


Ah donc pour toi l'application c'est les vues/contrôleurs/modèles, mais pas le framework autour qui fait tourner tout ça ?
Donc en gros tout est MVC sauf ce qui ne l'ai pas... :p
 


Quand tu développes une application, tu te concentes seulement sur ce qui concerne l'application. Le framework est là pour t'aider. Si ton application fait du MVC, ton framework n'a pas à ramener sa fraise dans ce MVC, et pire si c'est une classe Utilitaire de transformation de XML par exemple, il n'y a pas à la foutre dans le MVC


---------------
Blablaté par Harko
n°2041434
drasche
Posté le 10-12-2010 à 20:02:16  profilanswer
 

MEI a écrit :


Une classe purement technique type parsing de XML tu met ça dans le modèle toi ?
 
Pour moi c'est simplement une classe technique => Library, et donc tout n'est pas obligatoirement MVC.


La persistance, c'est du technique que ce soit base de données ou fichiers XML, donc oui, je le foutrais dans le modèle. Pourquoi traiterais-tu deux solutions au même problème de façon différente?


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°2041455
skeye
Posté le 10-12-2010 à 21:48:11  profilanswer
 

drasche a écrit :


La persistance, c'est du technique que ce soit base de données ou fichiers XML, donc oui, je le foutrais dans le modèle. Pourquoi traiterais-tu deux solutions au même problème de façon différente?


Si sa classe ne fait que du parsing de xml, c'est une simple lib. Qui peut aussi bien être utilisée dans le modèle qu'ailleurs.:o


---------------
Can't buy what I want because it's free -
n°2041530
koskoz
They see me trollin they hatin
Posté le 11-12-2010 à 18:45:32  profilanswer
 

J'ai dans certaines méthodes un bout de script qui vérifie si l'user est admin pour qu'il puisse accéder à certaines pages. Typiquement, j'ai une classe news, une user, etc, et les fonctions admin sont aussi dans ces mêmes classes, mais sont protégées par ce petit bout de code.
 
Ce que j'aimerai faire, c'est foutre ces 3 lignes dans une fonction, mais je ne sais pas où ranger cette fonction [:pingouino]


---------------
Twitter
n°2041533
skeye
Posté le 11-12-2010 à 19:31:10  profilanswer
 

koskoz a écrit :

J'ai dans certaines méthodes un bout de script qui vérifie si l'user est admin pour qu'il puisse accéder à certaines pages. Typiquement, j'ai une classe news, une user, etc, et les fonctions admin sont aussi dans ces mêmes classes, mais sont protégées par ce petit bout de code.

 

Ce que j'aimerai faire, c'est foutre ces 3 lignes dans une fonction, mais je ne sais pas où ranger cette fonction [:pingouino]


Si t'as une classe user, pourquoi pas tout simplement une méthode style isAdmin() dedans? [:autobot]

Message cité 1 fois
Message édité par skeye le 11-12-2010 à 19:31:16

---------------
Can't buy what I want because it's free -
n°2041534
koskoz
They see me trollin they hatin
Posté le 11-12-2010 à 19:48:57  profilanswer
 

skeye a écrit :


Si t'as une classe user, pourquoi pas tout simplement une méthode style isAdmin() dedans? [:autobot]

 

Je me suis mal exprimé : "qui vérifie s'il est admin, et si ce n'est pas le cas il est redirigé".

 

En gros :

Code :
  1. if (!$this->user->is_admin())
  2.    redirect('home');


Message édité par koskoz le 11-12-2010 à 19:49:14

---------------
Twitter
n°2041545
skeye
Posté le 11-12-2010 à 21:25:01  profilanswer
 

Tu peux par exemple mettre ça dans une fonction qui sera chargée à l'init des contrôleurs qui ne servent que pour la partie admin?


---------------
Can't buy what I want because it's free -
n°2041546
koskoz
They see me trollin they hatin
Posté le 11-12-2010 à 21:29:41  profilanswer
 

skeye a écrit :

Tu peux par exemple mettre ça dans une fonction qui sera chargée à l'init des contrôleurs qui ne servent que pour la partie admin?


 
Il n'y a pas de contrôleurs qui ne servent que pour la partie admin.


---------------
Twitter
n°2041554
skeye
Posté le 12-12-2010 à 00:35:29  profilanswer
 

koskoz a écrit :


 
Il n'y a pas de contrôleurs qui ne servent que pour la partie admin.


Alors dans tous tes contrôleurs...si possible dans la classe abstraite de laquelle ils dérivent...


---------------
Can't buy what I want because it's free -
n°2041555
MEI
|DarthPingoo(tm)|
Posté le 12-12-2010 à 01:18:29  profilanswer
 

skeye a écrit :


Alors dans tous tes contrôleurs...si possible dans la classe abstraite de laquelle ils dérivent...


Il a pas trop le choix, il faut que chaque action qui le nécessite fasse d'elle même la vérification d'ACL.
 
En Zend Framework ça donne un truc comme ça :

Code :
  1. class My_Customer_Controller {
  2.     public function deleteAction() {
  3.         // verification de l'ACL...
  4.         if (!$this->_acl->isAllowed(Model_User_Profile::getInstance()->getRole(), 'delete') {
  5.             // redirection.
  6.         }
  7.    
  8.         // code de l'action.
  9.     }
  10. }


 
On peux aussi utiliser un plug-in de contrôleur pour faire des tests plus généralistes pour un contrôleur/module donné.
Mais dès qu'on est au cas par cas on a pas vraiment le choix.


---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
n°2041559
skeye
Posté le 12-12-2010 à 09:32:38  profilanswer
 

MEI a écrit :


Il a pas trop le choix, il faut que chaque action qui le nécessite fasse d'elle même la vérification d'ACL.
 
En Zend Framework ça donne un truc comme ça :

Code :
  1. class My_Customer_Controller {
  2.     public function deleteAction() {
  3.         // verification de l'ACL...
  4.         if (!$this->_acl->isAllowed(Model_User_Profile::getInstance()->getRole(), 'delete') {
  5.             // redirection.
  6.         }
  7.    
  8.         // code de l'action.
  9.     }
  10. }


 
On peux aussi utiliser un plug-in de contrôleur pour faire des tests plus généralistes pour un contrôleur/module donné.
Mais dès qu'on est au cas par cas on a pas vraiment le choix.


 
oué enfin tu le mets au moins dans une méthode de classe...qui peut être remontée dans ne classe mère si elle existe, ce qui serait déjà nettement mieux. Histoire de pas avoir à reprendre tout ton code le jour où tu changes d'outil pour gérer les acl...


---------------
Can't buy what I want because it's free -
n°2041560
flo850
moi je
Posté le 12-12-2010 à 09:37:03  profilanswer
 

dans symfony, toutes les actions commencent par les tests d'authorisation / de format reçu /...  
C'est pas super contraignant et ça simplifie vraiment la lecture

n°2041562
skeye
Posté le 12-12-2010 à 09:41:41  profilanswer
 

flo850 a écrit :

dans symfony, toutes les actions commencent par les tests d'authorisation / de format reçu /...  
C'est pas super contraignant et ça simplifie vraiment la lecture


C'est obligatoire? :??:


---------------
Can't buy what I want because it's free -
n°2041573
flo850
moi je
Posté le 12-12-2010 à 10:55:23  profilanswer
 

non
mais la classe d'action construite par défaut est comme ça, et encore une fois, je trouve pratique d'avoir la partie authorisation bien visible

 

de toute façon, la gestion des droits est souvent problématique a placer dans le mvc, avec des bouts qui sont dans le controleur de d'autres dans la vue

Message cité 1 fois
Message édité par flo850 le 12-12-2010 à 10:55:54
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  ..  60  61  62  63  64  65  66  67

Aller à :
Ajouter une réponse
 

Sujets relatifs
Comment créer une architecture propre et fonctionelle...[Débutant] Webdesigner a besoin d'aide pour PHP
script PHP style explorateur windowsPHP et MS SQL
[PHP] envoi d'images qui se dimentionne et s'ajoute direct sur 1pageAfficher le temps utilisé pour générer une page PHP
[PHP] connexion bdd différente selon page locale ou sur serveur ?Afficher une image générée par un script PHP dans un PDF ?
Utilisation d'une variable en Flash depuis PHPErreur de forum PHP
Plus de sujets relatifs à : Model View Controller (MVC) - Architecture des applications PHP


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR