p'tit coup de main ! [PHP objet] - PHP - Programmation
Marsh Posté le 28-02-2007 à 19:57:03
Les code qui est dans ton membre.php ne sert pas a grand chose puisque tu sort du declaratif.
Pour garder du code propre dans tes clients tu utilises des methodes statiques.
Code :
|
C est un framework de base que j utilise tout le temps et qui marche tres bien. Apres tu px rajouter des methode dans la factory pour avoir une sorte de chef d orchestre.
Dsl pour les fautes qwerty pwnz
Marsh Posté le 28-02-2007 à 20:12:08
Je n'ai pas tout compris, je sors du déclaratif, c'est à dire?
Je dois mettre tout ce qui est dans membre.php dans une classe main?
Marsh Posté le 28-02-2007 à 21:03:36
J'ai vu (et fait) pire lors de premières conceptions objet, mais c'est pas tout à fait ça là
Déjà, quitte à commencer un projet, met toi à PHP5 plutôt que PHP4. PHP5 est beaucoup plus adapté que PHP4 pour faire de l'objet (visibilité des variables et fonction, passage par référence, etc, etc ...);
Ensuite tu vois que là tu mélanges de l'objet (membre.classes.php) et du non-objet (membre.php). Tu viens de tomber sur le premier (mais pas le dernier) problème à faire de l'objet en PHP.
Pour le résoudre, il te faut un point d'entrée à ton application, un "controller" qui va lancer les actions, un truc qui correspondrait au main en java. Exemple :
dans l'index :
Code :
|
Et le controller :
Code :
|
C'est assez basique comme exemple, mais donc là tu vas faire du tout objet à l'exception de 2 lignes dans l'index. L'intéret est grand : un seul point d'entrée dans ton application signifie un seul endroit à modifier pour modifier toute l'application, etc, etc.
Et donc avec cette ptite intro, tu tombes dans l'apprentissage des "design pattern". Je t'"invite à lire en entier ce topic : http://forum.hardware.fr/hfr/Progr [...] 7425_1.htm
C'est hardu au début, mais si tu cherches à te renseigner sur tout ce que tu ne comprends pas ça viendra.
Je passes sur les méthodes de ta classe Member, parce que on va tomber dans des débats sur la POO ; moi, je ne ferais pas comme ça, mais j'ai déjà vu pire que ce que tu fais et faut bien commencer.
Ce que te montre supermofo ("factory pattern", enfin un d'entre eux) est à mon avis mal adapté : nul besoin d'utiliser des méthodes statiques. Et à mon sens c'est une bien piètre utilisation du factory pattern : c'est plutôt utile quand tu as le choix entre plusieurs objets pour la même action (par exemple, un objet qui va générer du html à partir de données, et un autre objet avec exactement les mêmes méthodes mais qui génère du pdf ; c'est le factory qui déterminera lequel instancier et tu n'as plus à t'en préoccuper dans le code). Là, utiiser une méthode statique pour instancier une classe du Model layer ... mouais pourquoi pas hein, je vois pas l'intéret
Marsh Posté le 28-02-2007 à 23:42:47
J'ai pas trop envie de rendre la tache de Fused plus difficile.
Par contre Djebel tu tapes sur un point sensible. Factory = decoupler instantiation de l'utilisation.
Entre utiliser
Code :
|
Mauvais usage : melanger de la logique et de l'instantiation.
ou
Code :
|
Mauvais usage : trop de code, copie d'objet au lieu de reference
ou
Code :
|
Mauvais usage : trop de statique = procedural
J'utilise la troisieme pour commodite, pour mes exceptions et pour etre plus comprehensible.
Edit: Pas motive pour detailler plus
Marsh Posté le 28-02-2007 à 23:47:15
Pas besoin de faire une méthode statique pour ça, tu peux par exemple faire une classe Factory qui est instanciée dans le constructeur de ton controller, et ensuite appeler une méthode publique de cette classe Factory quand tu le souhaites.
Les méthodes statiques autant éviter de les utiliser quand c'est pas nécessaire.
Au passage je pense qu'il y a pas de problème à mélanger de la logique et de l'instantiation, surtout quand tu instancie une classe du Model layer. Dans le cas d'une classe du Model layer, c'est vraiment uniquement pour ne pas se taper une ligne d'include ou d'autoload ^^
Marsh Posté le 28-02-2007 à 19:11:17
Hello,
je réalise un projet en php objet et j'aimerai quelques précisions !
voilà ce que je suis en train de faire :
Je dois tout d'abord gérer des membres.
J'ai un fichier membre.php dont voici le résumé :
Et un autre fichier membre.classes.php ou il y a toutes les fonctiones relatives au membres (dont le constructeur).
Donc pour utiliser toutes les fonctions relatives aux membres je dois construire un objet. Pas très judicieux je trouve. Je suis sur la bonne voie ou je me plante totalement ?