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

 


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

Model View Controller (MVC) - Architecture des applications PHP

n°1557981
AlphaZone
Posté le 10-05-2007 à 13:13:51  profilanswer
 

Reprise du message précédent :
Merci Skeye pour ton exemple. Je vais en prendre note.

mood
Publicité
Posté le 10-05-2007 à 13:13:51  profilanswer
 

n°1557989
skeye
Posté le 10-05-2007 à 13:19:52  profilanswer
 

Ce n'est qu'un exemple, hein, pas une vérité absolue non plus.;)


---------------
Can't buy what I want because it's free -
n°1557998
supermofo
Hello World !
Posté le 10-05-2007 à 13:25:22  profilanswer
 

omega2 a écrit :

Avec php5, tu peux faire de l'héritage avec les exceptions (telle exception à pour ancêtre telle autre exception) Ca permet de ne réagir qu'aux exceptions qui dérivent d'une exception donné et laisser les autres exceptions remonter plus haut.

 

Par exemple, si tu fais une exception générique sur les erreurs de base de donnée et une autre sur la modif du compte d'un utilisateur ainsi que plusieurs exceptions dérivé de ces deux là, alors tu pourras réagir d'une certaine maniére si c'est une erreur de bdd et d'une autre pour une erreur de saisie et ce sans avoir à te soucier de l'erreur exacte.

 

Je sais que zend utilise ce genre de systéme dans leur zend framework mais je n'ai pas de code simple à te proposer.

 


Je comprends, il s'agit d'une specialisation de l'exception. Certes on peut definir des "zones" d'exceptions, mais cela ne m'interesse pas.

 

Ce que je cherche a savoir c'est : est ce que les exceptions on le droit de revenir dans le flux l'application ? Si il existe des limites, les risques d'un code trop "exceptionnel" ou pas assez ...

 

Une projection pourrait etre d'implementer des mecanismes de rollback pour ces exceptions, si elles entrent dans ce cadre.
Immediatement ca implique des risques potentiels comme un rollback foireux qui endommagerait les donnees, et ou des boucles infinies, ou enfin des cas hors logique non-prevu.
Finalement ca revient a peu pres au dev d'une application complete, c'est peut etre la raison pour laquelle les dev se limite a balancer des messages d'erreurs.

 

Ok les exceptions sont utilisees pour gerer des problemes exceptionnels qui empeche le bon deroulement de l'app. Mais parmi ces situations, certaines sont clairement recuperable.

 

Mais c'est pas grave, d'autres dev sur d'autres langages ont deja du faire le tour sur la question.

 

Maintenant fo de la doc !

n°1558000
skeye
Posté le 10-05-2007 à 13:27:45  profilanswer
 

supermofo a écrit :

Ce que je cherche a savoir c'est : est ce que les exceptions on le droit de revenir dans le flux l'application ? Si il existe des limites, les risques d'un code trop "exceptionnel" ou pas assez ...
 
Une projection pourrait etre d'implementer des mecanismes de rollback pour ces exceptions, si elles entrent dans ce cadre.


C'est un peu pour ça que c'est fait, non?
On attrape l'exception à l'endroit où on sait la traiter pour revenir dans un état stable, ou, si c'est irrécupérable, logger l'erreur/afficher un message cohérent à l'utilisateur...


---------------
Can't buy what I want because it's free -
n°1558514
supermofo
Hello World !
Posté le 10-05-2007 à 23:46:57  profilanswer
 

En supprimant le fameux log d 'erreur de la liste de ce qui se fait pour l instant.

 

J'ai encore rien trouve qui pourrait revenir a cet etat stable, d'une facon disons organisee.

 

Prenons l'exemple d'une factory et d'une class DB. Deux classes d'exception sensees pouvoir repondre aux futurs demande de l'application.

 

Factory plante sur: fichier non existant, fichier illisible, classe non definie, extension incorrecte ....
Db plante sur: connection, erreur db|table non existant, erreur syntaxe

 

Ok je deroule les extensions pour ces cas irrecuperables. Maintenant j'ai definit des wrapper autour des acces donnees normal.
Ces derniers sont senses etre capable de retrouver leur chemins, du fait qu il accepte beaucoup plus de parametres en entree.

 

Petit exemple:

 

Class Sql_Table extends Sql{}
Class Sql_User_Table extends Sql_Table{}

 

Un probleme arrive sur Sql_User_Table, ce dernier est d'un type recuperable (par exemple un format non supporte pour un parametre) par default. Puis ca remonte jusqu'a resolution du probleme, cas echeant 'prout' error.

 

Il y a eut un traitement de l'erreur qui s'apparente a celui d'une application : le mecanisme d'heritage et la logique codee en dur.

 

Niveau limite j'en vois 2 : un code qui throw uniquement pour les irrecuperables, un code qui throw jusqu'a la moindre petite erreur dans un objet non vital a l'execution de l'app.

 

Ou s'arreter, ou commencer ?

       



Message édité par supermofo le 11-05-2007 à 00:26:39
n°1558593
skeye
Posté le 11-05-2007 à 09:02:56  profilanswer
 

Des exceptions tu en lèves à chaque fois que tu ne sais pas gérer une erreur dans le scope courant.
Si tu sais gérer le problème localement, lever une exception est idiot.
Mais si tu ne sais pas, p-e que l'appelant saura, lui...[:dawao]


---------------
Can't buy what I want because it's free -
n°1565764
HouseMD
Posté le 27-05-2007 à 03:19:04  profilanswer
 

Ca n'a pas 100% à voir avec MVC mais je tente quand même.
 
Je découvre les joies du pattern Active Record.
 
1° Comment faire des jointures SQL avec ce pattern ?
On crée toutes les méthodes findByXXX(); avec le SQL dedans et les jointures si besoin => correspond aux queries les plus souvent utilisées
+ une méthode findBySQL($query) => pour les cas plus rares non prévus
 
Vu qu'une classe implémentée en Active Record correspond logiquement à une seule table, c'est bon quand même ?
 
2° J'ai lu à gauche/droite que les méthodes findXXX() ne pouvaient pas être statiques avec PHP, alors qu'elles sont statiques dans d'autres exemples  :heink:  
 
Quelqu'un a une bonne explication ?
 
kthxbye :o

n°1565779
skeye
Posté le 27-05-2007 à 10:40:41  profilanswer
 

J'ai jamais utilisé ce pattern, mais au hasard je dirais que :
 
1) On peut considérer qu'une jointure est l'équivalent d'une vue dans la base, auquel cas tu crées un objet correspondant à la vue, et plus à une table.
 
2) Je ne vois pas pourquoi elles ne pourraient pas être statiques en php si elles peuvent l'être dans d'autres langages...faut voir où tu l'as lu et les explications qu'ils donnent.:o


---------------
Can't buy what I want because it's free -
n°1565805
HouseMD
Posté le 27-05-2007 à 13:22:34  profilanswer
 

skeye a écrit :

J'ai jamais utilisé ce pattern, mais au hasard je dirais que :
 
1) On peut considérer qu'une jointure est l'équivalent d'une vue dans la base, auquel cas tu crées un objet correspondant à la vue, et plus à une table.
 
2) Je ne vois pas pourquoi elles ne pourraient pas être statiques en php si elles peuvent l'être dans d'autres langages...faut voir où tu l'as lu et les explications qu'ils donnent.:o


Bon après avoir lu un peu partout qu'Active Record n'était pas top pour travailler avec plusieurs tables en même temps, je vais plutôt utiliser Data Mapper :sweat:
 
Pour les méthodes statiques:

Citation :

I wanted the find functions to be static, because an object shouldn’t have to populate itself after it has been instantiated. Unfortunately, in PHP, static methods aren’t capable of polymorphism (which makes sense since $this isn’t applicable). Therefore, overloading them becomes impossible.


Bref ca dépend de ce qu'on veut faire.

n°1565824
skeye
Posté le 27-05-2007 à 14:30:31  profilanswer
 

HouseMD a écrit :

Pour les méthodes statiques:

Citation :

I wanted the find functions to be static, because an object shouldn’t have to populate itself after it has been instantiated. Unfortunately, in PHP, static methods aren’t capable of polymorphism (which makes sense since $this isn’t applicable). Therefore, overloading them becomes impossible.


Bref ca dépend de ce qu'on veut faire.


moué, à tester...


---------------
Can't buy what I want because it's free -
mood
Publicité
Posté le 27-05-2007 à 14:30:31  profilanswer
 

n°1565835
HouseMD
Posté le 27-05-2007 à 15:39:22  profilanswer
 

Bon apparement même avec un Data Mapper la question des jointures persiste.
 
http://www.sitepoint.com/forums/sh [...] p?t=185352
 
Situation avec une table groups, une table users, un user appartenant à un seul groupe pour simplifier:
Supposons que je veux retrouver le nom du groupe de l'utilisateur

Code :
  1. $userMapper = new UserMapper($db);
  2. $user = $userMapper->findById('3');
  3. $groupMapper = new GroupMapper($db);
  4. $group = $groupMapper->findById($user->getGroupId());
  5. $groupName = $group->getName();


 
ou  
 

Code :
  1. $userMapper = new UserMapper($db);
  2. $user = $userMapper->findById('3');
  3. $groupName = $user->getGroupName(); // getGroupName() récupère le groupe et renvoie son nom


???
 
Tout ca pour une seule jointure...
 
Je me prend trop la tête et c'est un faux problème en fait ?

Message cité 1 fois
Message édité par HouseMD le 27-05-2007 à 15:40:01
n°1565872
supermofo
Hello World !
Posté le 27-05-2007 à 17:47:47  profilanswer
 

CA depend si c bien fait.

n°1565896
masklinn
í dag viðrar vel til loftárása
Posté le 27-05-2007 à 18:32:37  profilanswer
 

HouseMD a écrit :

Bon apparement même avec un Data Mapper la question des jointures persiste.
 
http://www.sitepoint.com/forums/sh [...] p?t=185352
 
Situation avec une table groups, une table users, un user appartenant à un seul groupe pour simplifier:
Supposons que je veux retrouver le nom du groupe de l'utilisateur

Code :
  1. $userMapper = new UserMapper($db);
  2. $user = $userMapper->findById('3');
  3. $groupMapper = new GroupMapper($db);
  4. $group = $groupMapper->findById($user->getGroupId());
  5. $groupName = $group->getName();


 
ou  
 

Code :
  1. $userMapper = new UserMapper($db);
  2. $user = $userMapper->findById('3');
  3. $groupName = $user->getGroupName(); // getGroupName() récupère le groupe et renvoie son nom


???
 
Tout ca pour une seule jointure...
 
Je me prend trop la tête et c'est un faux problème en fait ?


J'vois pas ce que

Code :
  1. $userMapper = new UserMapper($db);
  2. $groupName = $userMapper->findById('3')->getGroupName();


a de compliqué [:petrus75]
 
Sauf la partie instanciation de userMapper à partir d'une db explicite, qui n'a rien à foutre là (la config de la DB devrait être centralisée et toutes les classes devraient taper dedans automagiquement pour pouvoir écrire un truc du style

Code :
  1. $group = $User::find('3')->getGroupName();


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°1565911
HouseMD
Posté le 27-05-2007 à 18:56:11  profilanswer
 

masklinn a écrit :

J'vois pas ce que

Code :
  1. $userMapper = new UserMapper($db);
  2. $groupName = $userMapper->findById('3')->getGroupName();


a de compliqué [:petrus75]
 
Sauf la partie instanciation de userMapper à partir d'une db explicite, qui n'a rien à foutre là (la config de la DB devrait être centralisée et toutes les classes devraient taper dedans automagiquement pour pouvoir écrire un truc du style

Code :
  1. $group = $User::find('3')->getGroupName();



L'intérêt de passer $db en paramètre c'est de pouvoir plus tard faire des requêtes sur des db différentes.
 
C'est pas moi qui le dit, c'est mon bouquin de patterns php et plusieurs forums :o

n°1565914
masklinn
í dag viðrar vel til loftárása
Posté le 27-05-2007 à 18:58:52  profilanswer
 

HouseMD a écrit :

L'intérêt de passer $db en paramètre c'est de pouvoir plus tard faire des requêtes sur des db différentes.


[:petrus75]
 
C'est complètement con comme idée [:petrus75]
 
Et en bonus, ça rend le code plus long, moins clair, plus crade et plus fragile [:petrus75]

HouseMD a écrit :

C'est pas moi qui le dit, c'est mon bouquin de patterns php et plusieurs forums :o


Mauvais bouquin, changer bouquin [:petrus75]


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°1565928
skeye
Posté le 27-05-2007 à 19:33:39  profilanswer
 

HouseMD a écrit :

bouquin de patterns php


huhu.[:petrus75]


---------------
Can't buy what I want because it's free -
n°1566151
supermofo
Hello World !
Posté le 28-05-2007 à 14:17:08  profilanswer
 

Il peut donner le nom du bouquin ?

n°1566153
nORKy
Grmmph...
Posté le 28-05-2007 à 14:24:15  profilanswer
 

Phpdoctrine est très interessant comme ORM.. vous devriez tester.
 
Chez moi, ca donne ca (en fait, y'a de multiple façon de le faire)

Code :
  1. $user = Manager::getInstence()->getTable("User" )->find('3');
  2. echo $user->Group->name;

n°1566157
HouseMD
Posté le 28-05-2007 à 14:28:21  profilanswer
 


Je l'attendais celle là :o
 

supermofo a écrit :

Il peut donner le nom du bouquin ?


Oui, il peut.
 
php|architect’s Guide to PHP Design Patterns
A Practical Approach to Design Patterns for the PHP 4 and PHP 5 Developer

n°1566175
supermofo
Hello World !
Posté le 28-05-2007 à 14:55:49  profilanswer
 

Ouais DataMapper est un overkill sauf si vraiment tu px pas faire autrement.
Un truc essentiel ds les DP, c 'est l economie.


Message édité par supermofo le 09-06-2007 à 08:44:53
n°1566653
FlorentG
Posté le 29-05-2007 à 13:52:09  profilanswer
 

Bon, mon framework commence à rosker des ours. Je vois plein d'idée que j'ai implémenté depuis 6 mois fleurir dans des frameworks de renommées mondiales. J'vais essayer de poster quelques détails ici au courant de la semaine.

n°1566679
Shinuza
This is unexecpected
Posté le 29-05-2007 à 14:40:32  profilanswer
 

Et magne :o [:dawa]


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
n°1566792
Loizo
Posté le 29-05-2007 à 17:03:49  profilanswer
 

Et tu le publis quand ton framework ?

n°1566793
FlorentG
Posté le 29-05-2007 à 17:04:34  profilanswer
 

Ch'ais pas, pour l'instant c'est closed-source et ça risque de durer...

n°1566794
Loizo
Posté le 29-05-2007 à 17:05:24  profilanswer
 

Ca sert a quoi alors ?

n°1566795
FlorentG
Posté le 29-05-2007 à 17:05:48  profilanswer
 

Hein ?

n°1566798
Loizo
Posté le 29-05-2007 à 17:10:57  profilanswer
 

Bah developper tout un Framework et dire que tu es content que les grand Framework réputé partent sur les meme idées que toi je ne vois pas trop l'interet si c'est pour le garder pour soi et quelques sites que tu feras.  
Apres ce n'est que mon avis, ce n'est pas une attaque ;)

n°1566801
FlorentG
Posté le 29-05-2007 à 17:18:06  profilanswer
 

Ben c'est pour la frime :D

n°1566803
Loizo
Posté le 29-05-2007 à 17:20:13  profilanswer
 

lol :D
Mais ca reste un gros boulot pour pas grand chose, apres t'as l'air d'etre passionné par cette technologique donc c cool.
Mais pourquoi t'as pas envie de le publier ?

n°1566826
AlphaZone
Posté le 29-05-2007 à 17:52:31  profilanswer
 

Tout simple pasqu'il n'a pas envie de le publier maintenant. Mais plus tard oui.

 

Bon ok, je sors =>


Message édité par AlphaZone le 29-05-2007 à 17:52:53

---------------
"Nous avons tous nos machines du temps. Celles qui nous ramènent en arrière sont les souvenirs, celles qui nous projettent en avant sont les rêves."
n°1566855
FlorentG
Posté le 29-05-2007 à 18:24:21  profilanswer
 

C'est mon chef qui veut pas :o
 
Mais un framework, c'est la première chose qu'il faut faire lorsqu'on veut pouvoir faire plein de sites facilement et tout. Alors y'a évidemment plein de solution existantes, mais quand on a des contraintes spéciales c'est moins top.

n°1567887
Sylver---
Not a geek. Just a human 2.0
Posté le 31-05-2007 à 13:44:43  profilanswer
 

Je sais pas si ça peut en aider certain mais : http://www.symfony-project.com/boo [...] ony-s-Code
C'est la page d'explication du MVC de symfony (un framework de ouf :love: ).
Je trouve qu'ils présentent bien la chose :jap:


---------------
Aloha
n°1567893
FlorentG
Posté le 31-05-2007 à 13:49:26  profilanswer
 

Ouais, c'est bien d'avoir expliqué la séparation de manière incrémentale


Message édité par FlorentG le 31-05-2007 à 13:49:33
n°1567904
multani
Dépressionnisé
Posté le 31-05-2007 à 14:01:59  profilanswer
 

J'aime bien la partie "Constants" vers la fin :

Citation :


Surprisingly, you will find very few constants in symfony. This is because constants have a major drawback in PHP: you can't change their value once they are defined.


 
[:petrus75] [:pingouino]

n°1567906
skeye
Posté le 31-05-2007 à 14:03:45  profilanswer
 

multani a écrit :

J'aime bien la partie "Constants" vers la fin :

Citation :


Surprisingly, you will find very few constants in symfony. This is because constants have a major drawback in PHP: you can't change their value once they are defined.


 
[:petrus75] [:pingouino]


 
[:roane]
 
Je préfère ne pas aller lire le reste.[:moule_bite]


---------------
Can't buy what I want because it's free -
n°1567927
Sylver---
Not a geek. Just a human 2.0
Posté le 31-05-2007 à 14:16:29  profilanswer
 

Et bien ne lis pas :jap:


---------------
Aloha
n°1567956
Shinuza
This is unexecpected
Posté le 31-05-2007 à 14:36:57  profilanswer
 

multani a écrit :

J'aime bien la partie "Constants" vers la fin :

Citation :


Surprisingly, you will find very few constants in symfony. This is because constants have a major drawback in PHP: you can't change their value once they are defined.


 
[:petrus75] [:pingouino]


[:rofl]


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
n°1568375
vanadium
N° Atomique : 23
Posté le 01-06-2007 à 09:00:04  profilanswer
 

Je trouve que Symfony est un Framework PHP5 vraiment abouti. La documentation est très complète et se lit facilement. Symfony est difficile à prendre en main au départ du fait de l'utilisation intensive de fichiers de configuration en YAML, mais ça en vaut la peine vu le temps qu'on gagne par la suite. :)

n°1568384
PunkRod
Digital Mohawk
Posté le 01-06-2007 à 09:39:55  profilanswer
 

J'ai testé un peu Symfony, pas eu beaucoup de temps pour approfondir mais y a effectivement de bonnes idées.

 

J'ai vu aussi que le zend framework allait bientôt sortir, quelqu'un s'est fait un peu la main dessus ?
(pour rester dans le MVC j'ai vu qu'il y a une classe controller et une classe view notamment) à titre perso je me suis à peine penché dessus encore.

n°1568694
Skateinmar​s
Posté le 01-06-2007 à 15:53:13  profilanswer
 

Plop.
Perso j'utilise CodeIgniter grâce auquel je me suis lancé dans le PHP orienté objet et le MVC et ce framework rosque des nounours : léger, abordable, adaptable, bref le bien quoi :)
Après je ne dis pas que symfony est moins bien mais je trouve que symfony est seulement utilisable sur les gros gros projets "corporate"

n°1568756
omega2
Posté le 01-06-2007 à 18:04:04  profilanswer
 

PunkRod > J'ai comencé à l'utiliser mais pas pour la partie affichage. Il y a de bon trucs dedans mais il y a encore des manques dans les parties que j'ai utilisé. D'un autre côté, c'est pas encore sortie en version stable alors ca peu changer.

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  ..  22  23  24  ..  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-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)