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

 


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

Model View Controller (MVC) - Architecture des applications PHP

n°1539222
Shinuza
This is unexecpected
Posté le 05-04-2007 à 20:05:20  profilanswer
 

Reprise du message précédent :
L'est même pas documentée  [:emonkey]


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
mood
Publicité
Posté le 05-04-2007 à 20:05:20  profilanswer
 

n°1539224
masklinn
í dag viðrar vel til loftárása
Posté le 05-04-2007 à 20:13:16  profilanswer
 

Shinuza a écrit :

L'est même pas documentée  [:emonkey]


Ben non puisque c'est une méthode générée dynamiquement par patterning :o


---------------
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°1539331
skeye
Posté le 06-04-2007 à 07:25:33  profilanswer
 

Djebel1 a écrit :

Ils disent tous que la méthode de Skeye est valable mais archi crade niveau concept objet.

 

Ah oui mais forcément si tu racontes n'importe-quoi au type il va pas te répondre que ma suggestion de design est bonne, hein...[:pingouino]
Je sais pas si t'as remarqué, mais dans mon code d'exemple, ta classe Stock était toujours là...la méthode statique n'était pas là pour remplacer une classe qui gère des collections de voitures, elle était là pour lui fournir des données concernant des voitures, qu'elle n'a pas à savoir aller chercher toute seule.[:dawa]

Message cité 1 fois
Message édité par skeye le 06-04-2007 à 07:26:13

---------------
Can't buy what I want because it's free -
n°1539528
gizmo
Posté le 06-04-2007 à 12:16:23  profilanswer
 

Djebel1 a écrit :

J'en ai parlé avec mes collègues, et aussi avec des mecs qui bossent pour le SIB (qui gère notamment une des plus grosses db de données biologiques au monde).


J'espère que tu fais pas référence à Swiss-Prot et TrEMBL, parce que niveau DB pourries, je pense qu'ils remporte la médaille haut la main :o

n°1539546
Djebel1
Nul professionnel
Posté le 06-04-2007 à 13:04:27  profilanswer
 

skeye a écrit :

Ah oui mais forcément si tu racontes n'importe-quoi au type il va pas te répondre que ma suggestion de design est bonne, hein...[:pingouino]
Je sais pas si t'as remarqué, mais dans mon code d'exemple, ta classe Stock était toujours là...la méthode statique n'était pas là pour remplacer une classe qui gère des collections de voitures, elle était là pour lui fournir des données concernant des voitures, qu'elle n'a pas à savoir aller chercher toute seule.[:dawa]


hmmmm

Code :
  1. public static getDispo($marque){
  2.       $vl = new VoitureDataLoader();
  3.       $data = $vl->getDispo($marque);
  4.       $result = array();
  5.       foreach($data as $key=>$val){
  6. $result[] = new Voiture($val['marque'], $val['modele'], ...);
  7.       }
  8.     }


Citation :


> If you need to get a list of all cars in store, I was told that you
> need a static method in the class Car, that will return a collection
> of Car



Ta méthode est statique et retourne une collection de voitures non ?  :kaola:  
 
Autant j'ai bien compris avec le message de Masklinn qu'il y avait certaines choses que j'avais mal comprises et mal exprimées, autant j'ai bien demandé entre autre des renseignements sur le fait d'avoir une méthode statique retournant une collection de voitures ^^
 
Alors oki tu as bien une classe Stock qui gère des opérations sur des voitures, mais je ne comprenais vraiment pas comment on pouvait me répondre que le coup de la méthode statique était la seule approche possible (mais visiblement tu ne me parlais que d'une possibilité, pas d'une obligation).
 
En tout cas avec l'exemple de Masklinn sur ruby, le mail du gars, et ce que tu disais, je vois bien que c'est une possibilité tout à fait valable et utilisée. Mais, en tant que noob profond que je suis, mon avis qui  n'engage que moi est que ça tient pas la route du point de vue du concept objet. Je peux donner mes raisons mais elles se feront démonter une à une  :whistle: Je vais donc regarder ce que donne le Factory pattern.
 

gizmo a écrit :

J'espère que tu fais pas référence à Swiss-Prot et TrEMBL, parce que niveau DB pourries, je pense qu'ils remporte la médaille haut la main :o


Ouais enfin le SIB c'est quand même un institut compétent et reconnu dont la mission est de venir informatiquement en aide aux biologistes, et qui comprend à ce titre pas mal de développeurs compétents. ;)
M'enfin c'était juste pour dire que j'avais essayé de discuter avec des gars qui étaient pas des noobs complets (qui a dit contrairement à moi ? :fou:)

n°1539553
skeye
Posté le 06-04-2007 à 13:19:29  profilanswer
 

Djebel1 a écrit :

Ta méthode est statique et retourne une collection de voitures non ?  :kaola:  
 
Alors oki tu as bien une classe Stock qui gère des opérations sur des voitures, mais je ne comprenais vraiment pas comment on pouvait me répondre que le coup de la méthode statique était la seule approche possible (mais visiblement tu ne me parlais que d'une possibilité, pas d'une obligation).


CQFD. Dans ton mail tu opposes les deux, ce qui fait supposer au type qu'on t'a dit de ne pas faire de classe spécifique pour gérer ta collection de voitures. Alors là forcément, niveau objet, c'est nul à chier.[:moule_bite]


---------------
Can't buy what I want because it's free -
n°1539555
skeye
Posté le 06-04-2007 à 13:24:13  profilanswer
 

'fin bref, tes raisons pour refuser ça c'est de la merde (à mon humble avis, hein [:petrus75]), si tu veux pas de mes conseils les prends pas, perso ça va pas me changer la vie. [:doc petrus]
 
...et même si ce n'est pas la seule approche possible, elle est infiniment meilleure du point de vue mvc que l'horreur que tu avais pondu, puisque c'est le sujet du topic.


---------------
Can't buy what I want because it's free -
n°1539561
Djebel1
Nul professionnel
Posté le 06-04-2007 à 13:33:25  profilanswer
 

skeye a écrit :

 
...et même si ce n'est pas la seule approche possible, elle est infiniment meilleure du point de vue mvc que l'horreur que tu avais pondu, puisque c'est le sujet du topic.


Ha mais j'ai jamais dit le contraire hein  :sweat: si je pensais avoir raison et savoir comment faire, je ne serais pas là en train de pêter les couilles depuis deux jours.
Tes conseils je les prend volontiers, tu m'en as souvent donné, après on peut ptet les discuter, je vois pas pourquoi ça devrait devenir "personnel".
 
Cette discussion m'a montré une manière de faire, et m'a orienté vers une seconde, avec laquelle je reviendrais surement vous tanner, donc c'était intéressant pour moi ...


Message édité par Djebel1 le 06-04-2007 à 13:38:42
n°1539588
skeye
Posté le 06-04-2007 à 13:55:37  profilanswer
 

Je prends pas ça personnellement...mais ça m'agace de lire que ce que tu retiens c'est que ce que je te propose ne tient pas la route coté conception objet, alors que que les avis que tu as demandés sont fortement biaisés par ta manière erronée de présenter ce que je te donne...
 
'fin bref, tout ça pour dire que je commence à trouver lassant de devoir te justifier une approche dont le bien fondé me parait évident...:o


---------------
Can't buy what I want because it's free -
n°1539624
Djebel1
Nul professionnel
Posté le 06-04-2007 à 14:38:52  profilanswer
 

Ouais ouais je comprends bien ton agacement au vue de ce que j'ai écrit. Et si au début je comprenais vraiment pas pourquoi tu faisais comme ça (merde dans les yeux quand tu nous tiens), maintenant je comprends bien pourquoi et je vois bien que c'est valable. Je suis simplement pas fan de la méthode statique et uniquement de ça, si ça t'intéresse je peux te donner mes motivations mais bon, de ce que je vois du factory pattern pour le moment, ça a l'air de pas mal répondre à mes attentes (oui, parce que ça aussi je l'utilisais mal en fait  :fou: ).
Bref, mea culpa


Message édité par Djebel1 le 06-04-2007 à 14:41:06
mood
Publicité
Posté le 06-04-2007 à 14:38:52  profilanswer
 

n°1539866
Shinuza
This is unexecpected
Posté le 06-04-2007 à 23:09:31  profilanswer
 

J'en suis à ça coté template

 
Code :
  1. <table border="2">
  2. <?php foreach ($u->users as $user) { ?>
  3. <tr>
  4.  <td>Nom : <?php echo $user['nom'] ?></td>
  5.  <td>Prenom : <?php echo $user['prenom'] ?></td>
  6. </tr>
  7. <?php } ?>
  8. </table>
 

Ca m'a l'air pas trop pourri

Message cité 1 fois
Message édité par Shinuza le 06-04-2007 à 23:09:50

---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
n°1539926
skeye
Posté le 07-04-2007 à 11:56:14  profilanswer
 

Shinuza a écrit :

J'en suis à ça coté template

 
Code :
  1. <table border="2">
  2. <?php foreach ($u->users as $user) { ?>
  3. <tr>
  4.  <td>Nom : <?php echo $user['nom'] ?></td>
  5.  <td>Prenom : <?php echo $user['prenom'] ?></td>
  6. </tr>
  7. <?php } ?>
  8. </table>
 

Ca m'a l'air pas trop pourri

 

euh...oui? J'ai dû rater un épisode, je comprends pas ce que tu veux qu'on te réponde...:D

 

[edit]

 

Avec smarty ça donnerait ça, tiens :

Code :
  1. <table border="2">
  2. {foreach from=$u->users item='user'}
  3. <tr>
  4.  <td>Nom : {$user['nom']}</td>
  5.  <td>Prenom : {$user['prenom']}</td>
  6. </tr>
  7. {/foreach}
  8. </table>
 

Je trouve ça plus clair, en fait.[:petrus75]

Message cité 2 fois
Message édité par skeye le 07-04-2007 à 11:59:43

---------------
Can't buy what I want because it's free -
n°1539931
leflos5
On est ou on est pas :)
Posté le 07-04-2007 à 12:19:31  profilanswer
 

skeye a écrit :

euh...oui? J'ai dû rater un épisode, je comprends pas ce que tu veux qu'on te réponde...:D
 
[edit]
 
Avec smarty ça donnerait ça, tiens :

Code :
  1. <table border="2">
  2. {foreach from=$u->users item='user'}
  3. <tr>
  4.  <td>Nom : {$user['nom']}</td>
  5.  <td>Prenom : {$user['prenom']}</td>
  6. </tr>
  7. {/foreach}
  8. </table>


 
Je trouve ça plus clair, en fait.[:petrus75]


Même débat que ' ou " :whistle:

n°1539965
skeye
Posté le 07-04-2007 à 15:05:40  profilanswer
 

bah c'était jute histoire de dire quelque chose...un peu de mal à trouver le rapport direct avec le topic en fait!:o


---------------
Can't buy what I want because it's free -
n°1539966
Shinuza
This is unexecpected
Posté le 07-04-2007 à 15:07:01  profilanswer
 

skeye a écrit :

euh...oui? J'ai dû rater un épisode, je comprends pas ce que tu veux qu'on te réponde...:D

 

[edit]

 

Avec smarty ça donnerait ça, tiens :

Code :
  1. <table border="2">
  2. {foreach from=$u->users item='user'}
  3. <tr>
  4.  <td>Nom : {$user['nom']}</td>
  5.  <td>Prenom : {$user['prenom']}</td>
  6. </tr>
  7. {/foreach}
  8. </table>
 

Je trouve ça plus clair, en fait.[:petrus75]

 

Je propose juste une solution coté vue (cf le début du topic) et ça aidera les "débutants" à voir ce à quoi doit ressembler une vue, soit une couche bien séparée) :)

 

Chacun son truc, j'ai choisi la solution built-in, pour moi plus simple à mettre en oeuvre rapidement. Ce qui évite d'apprendre une nouvelle syntaxe - aussi simple soit-elle. D'ailleurs, je vais chercher des infos sur la syntaxe alternative de php qui est "super bien documentée" et qui se rapproche de la syntaxe d'origine de smarty

Message cité 1 fois
Message édité par Shinuza le 07-04-2007 à 15:08:24

---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
n°1539971
0x90
Posté le 07-04-2007 à 15:34:16  profilanswer
 

masklinn a écrit :

Bof, dans les langages à métaobjets, les classes sont aussi des instances :o


 
Une idée de à quoi pourrait servir les métaobjets en php ?  
 
plus drôle, une idée de comment ils pourraient implémenter ça ? [:petrus75]
 

Spoiler :


Une pseudo-méta-classe qui construit une chaine de caractères pour la classe puis l'eval, ça le fait ? [:chrisbk]


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°1539974
masklinn
í dag viðrar vel til loftárása
Posté le 07-04-2007 à 15:42:27  profilanswer
 

0x90 a écrit :

Une idée de à quoi pourrait servir les métaobjets en php ?

 
j'ai aucune idée de ce à quoi peut servir PHP, alors des métaobjets en PHP [:metos]  

0x90 a écrit :

plus drôle, une idée de comment ils pourraient implémenter ça ? [:petrus75]


 [:kend]


---------------
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°1539993
skeye
Posté le 07-04-2007 à 17:24:58  profilanswer
 

Shinuza a écrit :

Je propose juste une solution coté vue (cf le début du topic) et ça aidera les "débutants" à voir ce à quoi doit ressembler une vue, soit une couche bien séparée) :)


C'est léger, comme vue...[:petrus75]
Là c'est juste un template, que tu montres...:D


---------------
Can't buy what I want because it's free -
n°1540009
crapodesil​es
Posté le 07-04-2007 à 18:57:01  profilanswer
 

bonjour, je debute en prog PHP-MVC et je galere dejas ...
 
je commence par un formulaire bateau

Code :
  1. <html>
  2. <body>
  3. <form method="GET" action="controleur.class.php">
  4. la table :
  5. <input type="text" name="table" size="20">
  6. <br><br><br>
  7. operation :
  8. <P><INPUT TYPE=radio NAME=operation VALUE=cpt>cpte
  9. <P><INPUT TYPE=radio NAME=operation VALUE=affi>affic
  10. <br><br>
  11. <INPUT TYPE=submit NAME=Envoyer VALUE="Envoyer">
  12. <INPUT TYPE=reset NAME=Effacer VALUE="Effacer" >
  13. </form>
  14. </body>
  15. </html>


 
 
ou je passe $table et $operation au controleur  
 

Code :
  1. <?php
  2. include ("model.class.php" );
  3. class cont {
  4. var $table, $choix;
  5. function run() {
  6. $table = $_GET['table'];
  7. $choix = $_GET['operation'];
  8. if ($choix == "cpt" ) {
  9.  $model = new model($table);
  10.  $model->cpt();
  11. }
  12. else {
  13.  $model = new model($table);
  14.  $model->data();
  15. }
  16. }
  17. }
  18. ?>


 
le controleur en fonction du choix appel donc une methode differente du model.
 

Code :
  1. <?php
  2. include ("controleur.class.php" );
  3. class model {
  4. var $test;
  5.   function model($t) {
  6.  $this->test = $t;
  7.   }
  8.  
  9.   function cpt() {
  10. echo "cpt ". $t; 
  11.    }
  12.  
  13.    function data() {
  14. echo "data ". $t;
  15. }
  16. }
  17. ?>


 
 
et le model affiche une phrase test (je sais c'est le boulot de la vue) ...
 
seulement j'ai pour resultat : une page blanche.
 
quelqu'un a une idée ?

n°1540010
skeye
Posté le 07-04-2007 à 18:58:47  profilanswer
 

euh c'est à dire que ton controleur.class.php ne fait rien à part déclarer une classe, alors je vois pas ce que tu veux que ça te donne d'autre!


---------------
Can't buy what I want because it's free -
n°1540011
Le_nain
Posté le 07-04-2007 à 19:01:42  profilanswer
 

Bonjour à tous :) !
 
Sujet très intéressant en effet (en plus, ça bouge en ce moment !)
 
J'ai des url du style (pour le controlleur news et les vues news / commentaires) :
 
/index.php?page=news -> liste les N dernières news (fichier de config) + le formulaire d'ajout d'une news pour ceux qui ont le droit ( if ($user->is_newser)) { // afficher le formulaire } )
/index.php?page=news&id=3 -> Affiche la 3ème news + les commentaires associés + le formulaire d'ajout d'un commentaire
/index.php?page=news&id=3&action=modifier -> Affiche le formulaire de modif (si on a le droit)
/index.php?page=news&id=3&action=supprimer -> Affiche le formulaire de suppression (si on a le droit)
 
Plusieurs questions :D :
1) Le système du controlleur est-il bon ? (c'est un peu chiant tous ces GET à vérifier...)
2) Lors d'un ajout par exemple, je passe au modèle mes POST, mais une news à aussi un auteur, dois-je aussi passer l'id de l'auteur au modèle (je pense que oui), ou le modèle peut récupérer ça directement depuis $_SESSION['id'] ?
3) Pourrais-t-on pour des pages différentes appeler le même controlleur ? (exemple pour action=sujet, appeler le controlleur forum)
4) Est-ce à la vue d'utiliser le modèle (et de l'instancier) ou au controlleur de lui passer ? (je voterais pour la première solution, car dans ce cas la gestion d'un système de cache est plus simple (même pas besoin d'instancier le modèle !)
5) Ont dit aussi que le modèle n'est pas censé savoir que les autres couches existent, mais parfois on a besoin de'actions spécifiques (ex : récupérer les N dernières news), ce qui nous conduis à implémenter une nouvelle méthode dans le modèle, est-ce-bien ?
 
Ca fait déjà pas mal :p je reviendrais si j'ai d'auters questions !
Merci à ceux qui pourront répondre !

n°1540014
crapodesil​es
Posté le 07-04-2007 à 19:07:46  profilanswer
 

skeye a écrit :

euh c'est à dire que ton controleur.class.php ne fait rien à part déclarer une classe, alors je vois pas ce que tu veux que ça te donne d'autre!


 
exact j'ai alors instancié $conti objet de controleur mais toujours rien  :(  
 

Code :
  1. <?php
  2. include ("model.class.php" );
  3. class cont {
  4. var $table, $choix;
  5. function cont() {
  6. $table = $_GET['table'];
  7. $choix = $_GET['operation'];
  8. if ($choix == "cpt" ) {
  9.  $model = new model($table);
  10.  $model->cpt();
  11. }
  12. else {
  13.  $model = new model($table);
  14.  $model->data();
  15. }
  16. }
  17. }
  18. $conti = new cont();
  19. ?>

n°1540016
skeye
Posté le 07-04-2007 à 19:09:52  profilanswer
 

Le_nain>

 

1) Difficile à dire juste avec ça.:o
2) Le modèle est instancié par le contrôleur, qui doit lui fournir lui-même tout ce dont il a besoin.
3) Je vois pas pourquoi on ne pourrait pas...:D
4) Faux, 2eme solution, la vue n'a pas à connaitre le modèle.
5) Le modèle fournit une interface d'accès aux données...s'il ne suffit pas à l'utilisation qu'on voudrait en avoir il est normal de le compléter.


Message édité par skeye le 07-04-2007 à 19:10:09

---------------
Can't buy what I want because it's free -
n°1540019
Le_nain
Posté le 07-04-2007 à 19:15:09  profilanswer
 

crapodesil es -> tu n'appelles jamais la méthode "run", ca ne risque pas de marcher :)
 
skeye -> merci pour toutes ces précisions, mais le 4 me perturbe : ça veut dire qu'on instancie "relativement souvent" (entre guillemets hein) des classes du modèle pour rien... C'est pas super optimisé !

n°1540025
crapodesil​es
Posté le 07-04-2007 à 19:27:17  profilanswer
 

mais en instanciant cont ca revient au meme non ?
 
j'ai pas trop compris a quoi servait la methode run, c'est un constructeur ?
ni comment l'appeller ..

n°1540029
Le_nain
Posté le 07-04-2007 à 19:31:30  profilanswer
 

Ah bah forcément... run() n'est PAS un constructeur, c'est juste une méthode !
 
Il faut faire :
 
$conti->run();
 
Pour l'appeler !

n°1540032
Shinuza
This is unexecpected
Posté le 07-04-2007 à 19:34:27  profilanswer
 

crapodesiles a écrit :

mais en instanciant cont ca revient au meme non ?

 

j'ai pas trop compris a quoi servait la methode run, c'est un constructeur ?
ni comment l'appeller ..


Pour être un constructeur, run devrait être une méthode enfant de la classe run.
Il faut en effet que la classe et son constructeur portent le même nom, ou que la méthode constructeur s'appelle "__construct".

 

BTW je me pose la même question que Le_nain, comment instancier correctement - Comprendre de manière optimisée - et implicitement la classe du modèle correspondant?


Message édité par Shinuza le 07-04-2007 à 19:35:59

---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
n°1540041
supermofo
Hello World !
Posté le 07-04-2007 à 20:51:08  profilanswer
 

Le_nain a écrit :

Bonjour à tous  :)  !

 

Sujet très intéressant en effet (en plus, ça bouge en ce moment !)

 

J'ai des url du style (pour le controlleur news et les vues news / commentaires) :

 

/index.php?page=news -> liste les N dernières news (fichier de config) + le formulaire d'ajout d'une news pour ceux qui ont le droit ( if ($user->is_newser)) { // afficher le formulaire } )
/index.php?page=news&id=3 -> Affiche la 3ème news + les commentaires associés + le formulaire d'ajout d'un commentaire
/index.php?page=news&id=3&action=modifier -> Affiche le formulaire de modif (si on a le droit)
/index.php?page=news&id=3&action=supprimer -> Affiche le formulaire de suppression (si on a le droit)

 

Plusieurs questions  :D  :
1) Le système du controlleur est-il bon ? (c'est un peu chiant tous ces GET à vérifier...)
2) Lors d'un ajout par exemple, je passe au modèle mes POST, mais une news à aussi un auteur, dois-je aussi passer l'id de l'auteur au modèle (je pense que oui), ou le modèle peut récupérer ça directement depuis $_SESSION['id'] ?
3) Pourrais-t-on pour des pages différentes appeler le même controlleur ? (exemple pour action=sujet, appeler le controlleur forum)
4) Est-ce à la vue d'utiliser le modèle (et de l'instancier) ou au controlleur de lui passer ? (je voterais pour la première solution, car dans ce cas la gestion d'un système de cache est plus simple (même pas besoin d'instancier le modèle !)
5) Ont dit aussi que le modèle n'est pas censé savoir que les autres couches existent, mais parfois on a besoin de'actions spécifiques (ex : récupérer les N dernières news), ce qui nous conduis à implémenter une nouvelle méthode dans le modèle, est-ce-bien ?

 

Ca fait déjà pas mal  :p  je reviendrais si j'ai d'auters questions !
Merci à ceux qui pourront répondre !

 

1) NaN. Savais tu que 0.00000001 + 0.00000001 + (10 fois ) fait planter ta calculette ?

 

2) Post FORM = classe utilitaire t ' as compris ?

 

3) Oui

 

4) Non

 

5) Non. Ton controlleur fait ca, le modele est simple.

 


Ca fait combien sur 5 ???

 

MVC declineeeeeeeE

 


Message cité 1 fois
Message édité par supermofo le 07-04-2007 à 21:04:58
n°1540056
skeye
Posté le 07-04-2007 à 21:41:11  profilanswer
 

Le_nain a écrit :

skeye -> merci pour toutes ces précisions, mais le 4 me perturbe : ça veut dire qu'on instancie "relativement souvent" (entre guillemets hein) des classes du modèle pour rien... C'est pas super optimisé !


 
Ben non...c'est le controleur qui sait lorsqu'il faut les instancier ou pas, pas la vue.:o


---------------
Can't buy what I want because it's free -
n°1540066
Le_nain
Posté le 07-04-2007 à 22:17:41  profilanswer
 

supermofo a écrit :

2) Post FORM = classe utilitaire t ' as compris ?
4) Non
5) Non. Ton controlleur fait ca, le modele est simple.
 
Ca fait combien sur 5 ???
MVC declineeeeeeeE

2) Non, pas compris :(
5) Donc pour récupérer les 5 dernières news, il y aurait quoi concrètement comme méthodes dans le Modèle ? (vu que j'imagine qu'on va pas faire 5 requêtes pour récupérer 5 news, sinon bonjour les performances... faut bien une méthode qui sait faire ça non ?)
MVC décliné ? et alors ? J'essaye de comprendre et de developper un truc potable, pas la peine de me blâmer  :heink:  

skeye a écrit :

Ben non...c'est le controleur qui sait lorsqu'il faut les instancier ou pas, pas la vue.:o


4) merci à skeye d'avoir répondu à ce point :)
Le cache est donc à implémenter dans le controlleur si j'ai bien suivi !
 

n°1540097
Shinuza
This is unexecpected
Posté le 07-04-2007 à 23:08:41  profilanswer
 

skeye a écrit :

Ben non...c'est le controleur qui sait lorsqu'il faut les instancier ou pas, pas la vue.:o


Et il sait ça comment?
Normalement, si je m'appuis sur le seul framework mvc que je connais (rails) il n'y a jamais instanciation explicite, uniquement appel à une méthode en question (en l'occurence find, save, update, create), je suppose donc que c'est la classe parente du modèle qui instancie l'objet à l'appel d'une de ces méthodes. Right? :)


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
n°1540117
skeye
Posté le 08-04-2007 à 01:19:00  profilanswer
 

Shinuza a écrit :

Et il sait ça comment?
Normalement, si je m'appuis sur le seul framework mvc que je connais (rails) il n'y a jamais instanciation explicite, uniquement appel à une méthode en question (en l'occurence find, save, update, create), je suppose donc que c'est la classe parente du modèle qui instancie l'objet à l'appel d'une de ces méthodes. Right? :)


Je suis pas sûr d'avoir compris, et je ne connais pas rails...[:joce]


---------------
Can't buy what I want because it's free -
n°1540119
masklinn
í dag viðrar vel til loftárása
Posté le 08-04-2007 à 01:40:15  profilanswer
 

Shinuza a écrit :

Et il sait ça comment?
Normalement, si je m'appuis sur le seul framework mvc que je connais (rails) il n'y a jamais instanciation explicite, uniquement appel à une méthode en question (en l'occurence find, save, update, create), je suppose donc que c'est la classe parente du modèle qui instancie l'objet à l'appel d'une de ces méthodes. Right? :)


L'objet ou les objets, ce sont des classmethods, après il y a plein de magie dans ActiveRecord::Base pour faire fonctionner le tout.

 

Mais fondamentalement la majorité des ORMs fonctionnent de cette manière ;)


Message édité par masklinn le 08-04-2007 à 01:40:29

---------------
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°1540513
Le_nain
Posté le 09-04-2007 à 21:52:01  profilanswer
 

Si quelqu'un pouvait repasser pour commenter les remarques de supermofo que je n'ai pas comprise, ca serait cool :D supermofo lui même est surement le mieux placé pour donner les explicaitions, mais d'autres qui trainent par là doivent aussi pouvoir comprendre non ?

n°1540540
supermofo
Hello World !
Posté le 10-04-2007 à 00:31:47  profilanswer
 

2) Non, pas compris :(
5) Donc pour récupérer les 5 dernières news, il y aurait quoi concrètement comme méthodes dans le Modèle ? (vu que j'imagine qu'on va pas faire 5 requêtes pour récupérer 5 news, sinon bonjour les performances... faut bien une méthode qui sait faire ça non ?)
MVC décliné ? et alors ? J'essaye de comprendre et de developper un truc potable, pas la peine de me blâmer  :heink:  

 

Je blame personne. MVC decline pour dire qu on fait pas de MVC ici en fait :D

 

2 Pour les formulaires tu recuperes une classe toute faite ou tu codes toi meme une classe complete.
L objectif etant de ne pas melange les $_GET, avec les $_POST ou les $_COOKIE et ainsi d eviter de voir des mysql_real_escape_string pour echapper  $_GET['truc'] = 'cool'

  


5 Ya pas de controller .. Model = class News, class DBCommon, class DB pour les donnees !

 

Apres c est du lego

Message cité 1 fois
Message édité par supermofo le 10-04-2007 à 00:48:59
n°1540628
masklinn
í dag viðrar vel til loftárása
Posté le 10-04-2007 à 10:26:20  profilanswer
 

supermofo a écrit :

5) Donc pour récupérer les 5 dernières news, il y aurait quoi concrètement comme méthodes dans le Modèle ? (vu que j'imagine qu'on va pas faire 5 requêtes pour récupérer 5 news, sinon bonjour les performances... faut bien une méthode qui sait faire ça non ?)

[/quotemsg]
Un helper genre `getLast` qui prend un int en paramètre, comme ça tu peux appeler le nombre de derniers que tu veux :o


---------------
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°1540682
Djebel1
Nul professionnel
Posté le 10-04-2007 à 12:01:27  profilanswer
 

Me revoilà pour ces histoires de Factory (pour le déplaisir de Skeye et Masklinn !).
 
En reprenant le code donné en exemple par Skeye, ça vous semble correct un truc comme ça ?
 

Code :
  1. class VoitureDataLoader extends MysqlDataLoader{
  2.  
  3.  private function execSql($query){
  4.    $rs = mysql_query($query);
  5.    
  6.    $nbCol = mysql_jesaispasquoiquiretournelenombredecolonnes($rs);
  7.  
  8.    while ($data = mysql_fetch_array($rs))
  9.      {
  10.     $i=0;
  11.     while($i<$nbCol){
  12.       $arrVoiture[$x][$mysql_donne_moi_le_nom_de_la_col($i)] = $data[$i];
  13.       $i++;
  14.     }
  15.      }
  16.  }
  17.  
  18.  
  19.  public function getDispo($marque){
  20.    return $this->runSQL("select * from voiture where marque = '".$marque." and dispo = 1" );
  21.  }
  22. }
  23.  
  24.  
  25. class Voiture
  26. {
  27.    public $marque;
  28.    public $modele;
  29.    public $couleur;
  30.    public $prix
  31.    ...
  32. }
  33.  
  34. class CarFactory
  35. {
  36.    public function getCollectionByArray($data)
  37.    {
  38.         foreach($data as $key=>$val){
  39.            $result[] = new Voiture($val['marque'], $val['modele'], ...);
  40.         }
  41.         return $result;
  42.    }
  43. }
  44.  
  45. class Stock
  46. {
  47.  private $stockDispo;
  48.  
  49.  function __construct($marque){
  50.      $vl = new VoitureDataLoader();
  51.      $data = $vl->getDispo($marque);
  52.  
  53.      $carFactory = new CarFactory;
  54.      $result = $carFactory->getCollectionByArray($data);
  55.  }
  56. }


 
La seule différence avec le code de Skeye, c'est que ce n'est pas une méthode statique de la classe Voiture qui retourne une collection de voitures, mais une méthode d'une classe CarFactory.
 
Cette approche est-elle correcte ? (code à la va-vite toussa, juste pour l'idée). Merci.

n°1541014
supermofo
Hello World !
Posté le 10-04-2007 à 21:53:25  profilanswer
 

 


Un helper genre `getLast` qui prend un int en paramètre, comme ça tu peux appeler le nombre de derniers que tu veux   :o  [/quotemsg]

 


Ouais exactement.


Message édité par supermofo le 11-04-2007 à 00:48:27
n°1541251
Djebel1
Nul professionnel
Posté le 11-04-2007 à 12:55:02  profilanswer
 

Djebel1 a écrit :

Me revoilà pour ces histoires de Factory ...


ça passe mon bidule ou c'est encore de la merde en boîte ?

n°1541255
masklinn
í dag viðrar vel til loftárása
Posté le 11-04-2007 à 13:00:31  profilanswer
 

Je pense que CarFactory et VoitureDataLoader pourraient être mergés en une classe unique, ou en une hiérarchie de classes (fondamentalement le VoitureDataLoader "crée" des voitures du point de vue du système, qu'il les crée à partir du contenu d'une DB n'a pas réellement d'importance) :o


---------------
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°1541260
Shinuza
This is unexecpected
Posté le 11-04-2007 à 13:06:14  profilanswer
 

Tiens j'ai deux questions :
 
-J'ai jamais exploité le OO sous php suffisament profondément pour me retrouver avec deux niveaux de portée genre $this->php->sucks
 
C'est propre a un héritage?
 
-Je cherche à quoi correspond le tableau $params[] qui est utilisé en php, j'espère que ça n'est pas une copie de $_REQUEST :/
 
-Une dernière pour la route, je cherche comment instancier une classe de manière implicite, en appelant simplement une méthode fille, j'imagine qu'avec des errors/exceptions handlers ça doit être possible mais bon :vomi:


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  ..  19  20  21  ..  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)