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

 


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

Model View Controller (MVC) - Architecture des applications PHP

n°1541260
Shinuza
This is unexecpected
Posté le 11-04-2007 à 13:06:14  profilanswer
 

Reprise du message précédent :
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 11-04-2007 à 13:06:14  profilanswer
 

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

Shinuza a écrit :

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:


J'ai jamais faut d'OO en PHP donc je vais avoir du mal à répondre aux deux premières questions (enfin la première c'est de la composition pas de l'héritage, en héritage on augmente pas la profondeur du lookup).
 
Pour la dernière, je n'ai jamais utilisé de langage faisant un truc pareil, on instancie toujours de manière explicite dans la classmethod.


---------------
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°1541289
Djebel1
Nul professionnel
Posté le 11-04-2007 à 13:39:26  profilanswer
 

masklinn a écrit :

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


merci.
 
J'avais cru comprendre qu'il ne fallait pas qu'une classe de la data layer instancie des objets de la couche métier "pure". Pour toi, pas de souci si des objets Voiture sont instanciés dans la méthode execSql de la classe VoitureDataLoader (enfin en utilisant une autre méthode évidemment, mais l'idée est là) ?

n°1541336
Shinuza
This is unexecpected
Posté le 11-04-2007 à 14:39:15  profilanswer
 

masklinn a écrit :

J'ai jamais faut d'OO en PHP donc je vais avoir du mal à répondre aux deux premières questions (enfin la première c'est de la composition pas de l'héritage, en héritage on augmente pas la profondeur du lookup).


Niquel c'est "composition" qu'il me manquait, j'ai trouvé un article qui traite du sujet :jap:
 

masklinn a écrit :


Pour la dernière, je n'ai jamais utilisé de langage faisant un truc pareil, on instancie toujours de manière explicite dans la classmethod.


 
Je cherche surtout une piste pour :
-Inclure la classe
-Résoudre l'instanciation
-Appeler la méthode
 
So, la classmethod, c'est pas propre à ruby? [:sisicaivrai]


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
n°1541362
masklinn
í dag viðrar vel til loftárása
Posté le 11-04-2007 à 15:13:48  profilanswer
 

Shinuza a écrit :

Niquel c'est "composition" qu'il me manquait, j'ai trouvé un article qui traite du sujet :jap:
 
 
 
Je cherche surtout une piste pour :
-Inclure la classe
-Résoudre l'instanciation
-Appeler la méthode
 
So, la classmethod, c'est pas propre à ruby? [:sisicaivrai]


Non c'est juste que ça a des noms différents en fonction du langage (enfin pas des noms en réalité, juste une syntaxe, dans tous les cas ce sont des méthodes appartenant aux classes et non aux instances, donc classmethod).
 
En python et en ruby on appelle ça des classmethods, en Java et en C# ce sont les méthodes statiques


---------------
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°1541428
Shinuza
This is unexecpected
Posté le 11-04-2007 à 16:21:12  profilanswer
 

Donc dans le cas de
 

Code :
  1. Article.find(:all);


 
C'est l'appel à une méthode "statique"? (Putain c'est le bordel cette doc php)


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
n°1541453
masklinn
í dag viðrar vel til loftárása
Posté le 11-04-2007 à 16:54:41  profilanswer
 

traduit en Java ou en PHP, oui, ça correspond à l'appel d'une méthode statique `find` de la classe `Article`, donc un truc du style

Code :
  1. <?php
  2.  
  3. class Article {
  4.    public static function find(/* bla */) {
  5.         // blabla
  6.    }
  7. }
  8.  
  9.  
  10. Article::find("all" );
  11.  
  12. ?>


Ouais parce que c'est PHP je rappelle, donc une méthode statique sur une classe ça s'appelle pas comme une méthode d'instance, ça serait trop facile [:aloy]


Message édité par masklinn le 11-04-2007 à 16:55:50

---------------
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°1541491
Shinuza
This is unexecpected
Posté le 11-04-2007 à 17:30:22  profilanswer
 

Ouais mais la t'utilise l'operateur de résolution de portée
 

Code :
  1. <?php
  2.     class Article {
  3.         function find($d) {
  4.           echo $d;
  5.         }
  6.     }
  7.     Article::find("all" );
  8. ?>


 
Fonctionne aussi :spamafote:


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
n°1541515
masklinn
í dag viðrar vel til loftárása
Posté le 11-04-2007 à 17:47:25  profilanswer
 

Shinuza a écrit :

Ouais mais la t'utilise l'operateur de résolution de portée
 

Code :
  1. <?php
  2.     class Article {
  3.         function find($d) {
  4.           echo $d;
  5.         }
  6.     }
  7.     Article::find("all" );
  8. ?>


 
Fonctionne aussi :spamafote:


zomg [:pingouino]


---------------
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°1541520
MagicBuzz
Posté le 11-04-2007 à 17:50:38  profilanswer
 

même pas peur :lol:
 
quand je dis que PHP c'est le champion toutes catégories du goretisage, je crois que là je tiens mon exemple arf !
 
même en VB on peut pas faire ça :D

mood
Publicité
Posté le 11-04-2007 à 17:50:38  profilanswer
 

n°1541528
Shinuza
This is unexecpected
Posté le 11-04-2007 à 17:55:58  profilanswer
 


On peut dire ça oué :/
En fait on peut appeler n'importe quelle méthode sans la déclarer comme statique :/

 

Bon apparement on peut faire truc plus ou moins similaire à Ruby en utilisant la composition  [:sinclaire]
Ou sinon j'utilise une fonction qui prend en paramètre les modèles à instancier  [:sinclaire]

 

Edit :

 
Code :
  1. <?php
  2.  
  3. Class test {
  4.     function phpisapity() {
  5.         return 1+1;
  6.     }
  7. }
  8.  
  9. echo test::phpisapity();
  10.  
  11. ?>
 

Fonctionne, mais

 
Code :
  1. <?php
  2.  
  3. Class test {
  4.     var $phpisapity = 2;
  5. }
  6.  
  7. echo test::$phpisapity;
  8.  
  9. ?>
 

ne fonctionne pas (Fatal error: Access to undeclared static property: test::$phpisapity  on line 8)

Message cité 2 fois
Message édité par Shinuza le 11-04-2007 à 18:28:40

---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
n°1541560
masklinn
í dag viðrar vel til loftárása
Posté le 11-04-2007 à 18:26:40  profilanswer
 

Shinuza a écrit :

On peut dire ça oué :/
En fait on peut appeler n'importe quelle méthode sans la déclarer comme statique :/
 
Bon apparement on peut faire truc plus ou moins similaire à Ruby en utilisant la composition  [:sinclaire]


Pas à ma connaissance non, une méthode appartient soit à une classe soit à une instance (une classe étant une instance, mais habituellement pas une instance d'elle-même)


---------------
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°1541765
gizmo
Posté le 12-04-2007 à 09:38:12  profilanswer
 

Shinuza a écrit :

On peut dire ça oué :/
En fait on peut appeler n'importe quelle méthode sans la déclarer comme statique :/
 
Bon apparement on peut faire truc plus ou moins similaire à Ruby en utilisant la composition  [:sinclaire]
Ou sinon j'utilise une fonction qui prend en paramètre les modèles à instancier  [:sinclaire]
 
Edit :  
 

Code :
  1. <?php
  2.  
  3. Class test {
  4.     function phpisapity() {
  5.         return 1+1;
  6.     }
  7. }
  8.  
  9. echo test::phpisapity();
  10.  
  11. ?>


 
Fonctionne, mais  
 

Code :
  1. <?php
  2.  
  3. Class test {
  4.     var $phpisapity = 2;
  5. }
  6.  
  7. echo test::$phpisapity;
  8.  
  9. ?>


 
ne fonctionne pas (Fatal error: Access to undeclared static property: test::$phpisapity  on line 8)


 
normal, t'es en php 4, ils ne faisaient pas la distinction entre les methodes statiques et les methodes d'instances (ni entre public private protected,...)

n°1541793
Shinuza
This is unexecpected
Posté le 12-04-2007 à 10:18:11  profilanswer
 

Oui, mais non, je suis en php 5, j'ai mis var comme j'aurais pu mettre public dans le deuxième exemple. Pareil pour le constructeur dans le premier


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
n°1541814
leflos5
On est ou on est pas :)
Posté le 12-04-2007 à 10:38:47  profilanswer
 

Shinuza a écrit :

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:


__autoload avec peu de __call et si besooin une touche de __get ==> regarde les méthodes magiques c'est suspect comme truc mais c'est livré par défaut et ça facilite la vie si on en abuse pas :)
 
La question est plutot: est-il vraiment nécessaire de faire ce genre de chose? C'est un peu lourd, on sait tous que php est pas la F1 de l'éxécution alors si en plus tu le fais bosser à ta place :whistle:

n°1541837
Shinuza
This is unexecpected
Posté le 12-04-2007 à 11:07:14  profilanswer
 

Bah c'est juste histoire de bypasser une instanciation dont je me sers de toute façon.
__autoload je peux oublier, c'est php5 et ma prod est en php4 :/


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
n°1541861
gizmo
Posté le 12-04-2007 à 11:29:37  profilanswer
 

Shinuza a écrit :

Oui, mais non, je suis en php 5, j'ai mis var comme j'aurais pu mettre public dans le deuxième exemple. Pareil pour le constructeur dans le premier


var n'est pas compatible php5 dans les objets, il passe donc automatiquement en mode php4.

n°1542003
Shinuza
This is unexecpected
Posté le 12-04-2007 à 14:48:57  profilanswer
 

Je sais bien  [:pingouino] , j'ai donné l'exemple en php 4, mais on peut appeller une méthode non déclarée comme statique via l'opérateur de résolution de portée en php5 aussi  :o


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
n°1542341
supermofo
Hello World !
Posté le 13-04-2007 à 00:56:15  profilanswer
 

Putin on est a laube du 3eme millenaire

n°1543301
Shinuza
This is unexecpected
Posté le 16-04-2007 à 12:57:28  profilanswer
 

C'est moi ou le lookup en php4 est limité à levels?


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
n°1552478
FlorentG
Posté le 02-05-2007 à 17:02:10  profilanswer
 

Shinuza a écrit :

Je sais bien  [:pingouino] , j'ai donné l'exemple en php 4, mais on peut appeller une méthode non déclarée comme statique via l'opérateur de résolution de portée en php5 aussi  :o


T'es sûr de ça ? Je croyais qu'il râlait pour les trucs statiques non-déclarés, même en présence de __get ou __call (qui ne sont pas statiques, forcément).

n°1552483
Shinuza
This is unexecpected
Posté le 02-05-2007 à 17:09:49  profilanswer
 

Il rale que pour les propriétés, les méthodes non.
 
Php c'est le michel druker de la prog, un peu trop gentil :o


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
n°1552810
esox_ch
Posté le 02-05-2007 à 23:40:58  profilanswer
 

Bonjour,
 
J'ai une question niveau MVC ... J'ai un array $sql qui contient les string destinés à être préparés puis utilisés, dont les clef sont tirés des paramètres de l'URL. Ma question est : qui doit s'occuper d'extraire la bonne requete ? À priori je dirais que c'est la couche métier, mais étant donné que $sql est un attribut de la persistances, c'est pas un peu con de la récupérer dans la couche métier juste pour extraire une entrée d'un tableau?  Ou bien c'est mon idée de construire un tableau $sql qui prend l'eau?

n°1552883
skeye
Posté le 03-05-2007 à 07:34:26  profilanswer
 

Je dirais que c'est au controleur de construire ton tableau, mais qu'il n'a pas à savoir que ça va générer des requêtes sql...c'est à la couche métier de le décider quand on lui file le tableau.
Si j'ai bien compris la question.


---------------
Can't buy what I want because it's free -
n°1553101
Djebel1
Nul professionnel
Posté le 03-05-2007 à 12:58:36  profilanswer
 

+1 avec skeye.
 
Tiens pendant qu'on est au sql, j'aurais aussi une ptite question :  
 
les DAO, ils ont le droit de connaitre la couche métier, par exemple d'utiliser des objets de la couche métier ? Ou alors ils ne doivent rien savoir de la couche métier, et simplement renvoyer des tableaux de données, etc ?

n°1553151
esox_ch
Posté le 03-05-2007 à 14:29:34  profilanswer
 

Hello,
 
Donc Skeye tu penses que je dois stocker les requêtes dans le contrôleur, et que c'est lui qui va dire au modèle ce qu'il doit utiliser? :heink: Je comprend pas trop ce que viendraient à faire des requêtes SQL dans le contrôleur..

n°1553156
Djebel1
Nul professionnel
Posté le 03-05-2007 à 14:32:46  profilanswer
 

Non, je pense que ce qu'il dit, c'est que le controller analyse les paramètres $_GET pour construire le tableau, et transmet ce tableau au model. Le model se charge de construire la requête sql à partir du tableau.

n°1553169
esox_ch
Posté le 03-05-2007 à 14:41:36  profilanswer
 

D'accord,
Merci bien :D

n°1553374
supermofo
Hello World !
Posté le 03-05-2007 à 19:10:45  profilanswer
 

esox_ch a écrit :

Bonjour,

 

J'ai une question niveau MVC ... J'ai un array $sql qui contient les string destinés à être préparés puis utilisés, dont les clef sont tirés des paramètres de l'URL. Ma question est : qui doit s'occuper d'extraire la bonne requete ? À priori je dirais que c'est la couche métier, mais étant donné que $sql est un attribut de la persistances, c'est pas un peu con de la récupérer dans la couche métier juste pour extraire une entrée d'un tableau?  Ou bien c'est mon idée de construire un tableau $sql qui prend l'eau?

 

A part son job normal le ctrl n a pas de rapport avec ton probleme. Ton controller n'est pas Dieu et ton App n'est pas defini par le controller.

 

Par contre il connait les grandes etapes du programme ...

n°1553429
esox_ch
Posté le 03-05-2007 à 21:45:45  profilanswer
 

Non je sais bien, mais disons que dans ma tête je vois les variables provenant de l'url comme des trucs qui appartiennent au contrôleur et que donc je me disais que c'était peut-être mieux de faire tout le traitement chez lui ... Maintenant c'est vrai que le modèle ferait mieux l'affaire

n°1555823
naeh
Posté le 05-05-2007 à 19:59:27  profilanswer
 

Salut à tous :)
 
alors le MVC je commence à m'y intéresser depuis qu'on m'a posé une question "Vous connaissez ?" dans un entretien d'enmbauche et que j'ai répondu "Non" et c'est vrai jusque là je connaissais pas :(
 
j'ai essayé de suivre le topic depuis le début, je comprends en gros ce que c'est et a quoi ca sert et je trouve que c'est tres puissant comme methode :)
 
maintenant, supposant que je veuille faire une forum (a titre d'exemple) et suivant MVC.
 
comment voyez vous mes classes ? qui va faire quoi ?
 
je pense sérieusement faire un forum (je trouve pas mieux pour tester) pour m'autoformer en MVC, vous en pensez quoi ?
 
Merci :)

n°1555828
Shinuza
This is unexecpected
Posté le 05-05-2007 à 20:09:27  profilanswer
 

Pour commencer, je suis pas sur qu'un forum sera la meilleures des choses.
Essaye un blog  :jap:


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
n°1555831
naeh
Posté le 05-05-2007 à 20:10:37  profilanswer
 

un blog ? pourquoi pas :)
 
Merci pour l'idée

n°1555870
Shinuza
This is unexecpected
Posté le 05-05-2007 à 21:51:18  profilanswer
 

Surtout coté backoffice, tu vas t'éclater, surtout si t'as un gestionnaire de crud :)
 
Sinon j'ai une question les cons, vous récupèrez comment les controlleurs, actions et id dans l'url?


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
n°1555871
naeh
Posté le 05-05-2007 à 21:55:24  profilanswer
 

gestionnaire de crud ? c'est quoi ?
 
sinon, j'ai déjà mes tables de faites :D comme c'est juste un exercice je ne pense pas pousser trop loin dans les fonctionnalités, maintenant reste a faire les classes on verra pour la suite :D

n°1555872
Shinuza
This is unexecpected
Posté le 05-05-2007 à 21:58:13  profilanswer
 

http://www.google.com/search?q=crud

 

:o

Message cité 1 fois
Message édité par Shinuza le 05-05-2007 à 21:58:41

---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
n°1555873
naeh
Posté le 05-05-2007 à 22:05:00  profilanswer
 


 
sorry  :jap:  
 
 
pour l'instant le gestionnaire de crud n'est pas la priorité mais ça viendra :D

n°1555874
Shinuza
This is unexecpected
Posté le 05-05-2007 à 22:16:40  profilanswer
 

Tu verras que c'est d'une utilité surimportante quand tu vas chercher la vitesse de deploiement.
 
Ca et un scafolding digne de ce nom :)


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
n°1555884
Shinuza
This is unexecpected
Posté le 05-05-2007 à 23:08:02  profilanswer
 

http://fr3.php.net/manual/fr/ref.funchand.php
 
C'est une page qui devrait figurer à mon sens sur le premier post, c'est pratiquement la base en php pour faire un truc correct en mvc


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
n°1555901
naeh
Posté le 06-05-2007 à 00:34:08  profilanswer
 

je viens de visiter ton lien et effectivement ça aide :)
 
en fait moi j'ai fait autrement :
je me suis dit que pour le blog il devrait y'avoir les classes suivante : user, message, commentaire, etc.
 
toutes vont avoir un id, êtres éditées etc. donc j'ai créé une classe object (la mere de toutes les autres) avec un param ID et une methode Edit, comme ca j'aurais pas a le refaire a chaque classe et ca donne ça (pour l'instant :D):

Code :
  1. class Object {
  2. var $Id;
  3. function __construct($id){
  4.  if(is_int($id)){
  5.   $this->Id = $id;
  6.  }
  7. }
  8. function GetId(){
  9.  return $this->Id;
  10. }
  11. function NomClass(){
  12.  return get_class($this);
  13. }
  14. function ListeParams(){
  15.  $params = get_class_vars($this->NomClass());
  16.  foreach($params as $cle => $val){
  17.   $result[] = $cle;
  18.  }
  19.  return $result;
  20. }
  21. function Edit($params = array()){
  22.  $parametres = $this->ListeParams();
  23.  if(count($params) <= count($parametres)){
  24.   foreach($params as $cle => $val){
  25.    if(in_array($cle, $parametres)){
  26.     echo '$this->'.$cle .'==>'. $val.'<br />'; //faire un UPDATE SQL
  27.    }
  28.   }
  29.  }
  30. }
  31. }


 
donc ma methode Edit() me permet de faire l'update de n'importe qu'elle objet héritant de la classe Object, du moment ou le tableau qu'on lui fournit ressemble a : (param => vlaeur, etc...).


Message édité par naeh le 06-05-2007 à 00:39:40
n°1555933
supermofo
Hello World !
Posté le 06-05-2007 à 10:42:23  profilanswer
 

Ca a un nom ce genre d objet. On les trouve juste au dessus des objets qui gere les donnees.

mood
Publicité
Posté le   profilanswer
 

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