Poo avec php, interaction entre objets - PHP - Programmation
Marsh Posté le 03-09-2011 à 13:57:24
Hello,
Je commence juste le dév en POO pour ma part. Je n'y connaissais pas grand chose, mais j'ai suivi un tuto (en anglais) qui m'a bien aidé ces temps-ci :
http://www.elated.com/articles/cms [...] php-mysql/
Le mec explique comment créer une classe "Article" de base avec différents paramètres. Perso j'ai adapté tout ça pour créer d'autres classes (des produits et des revendeurs dans mon cas) et c'est assez souple à utiliser je trouve !
Donc, en prenant l'exemple de ce tuto, si demain tu dois modifier ta classe "Article", il te faudra renommer toutes les références à celles-ci sur les pages où tu y fais référence, c'est-à-dire dans ce cas précis les pages index.php et admin.php qui rassemblent les différentes fonctions et font référence aux méthodes utilisées dans ta classe (je sais pas si je suis très clair )
Enfin voilà, le mieux encore est de tester et de bidouiller soi-même quelques heures pour bien en comprendre les mécanismes !
Marsh Posté le 03-09-2011 à 15:35:32
Merci pour le lien, en effet c'est un trés bon tuto bien parlant et je retrouve dedans mon interrogation :
Dans la class Article -> function delete j'ai un
Code :
|
mais si demain, je change ma class qui gère mysql, je vais devoir éditer tous les appels à la précédente class ?
Marsh Posté le 03-09-2011 à 15:43:10
ben ouais, si tu remplaces une classe par une autre, forcément tu risques de devoir faire des modifications au niveau de tout ce qui faisait appel à cette classe.
Marsh Posté le 06-09-2011 à 20:19:08
scull a écrit : Merci pour le lien, en effet c'est un trés bon tuto bien parlant et je retrouve dedans mon interrogation :
|
Avec ton PDO, tu n'es pas dépendant du DBMS. J'ai peut-être pas bien compris mais "delete" est une méthode de "Article", non?
Au sinon tu peux découpler ton entité Article des opérations accès DB, façon JEE, et te retrouver avec un anemic domain model qui n'a heureusement pas encore la cote en PHP.
Il y a toujours une balance à faire entre découplage à l'extrême (avec complexité accrue) et risque de devoir faire des modifs (avec complexité moindre au départ)
Marsh Posté le 07-09-2011 à 11:31:28
scull a écrit : mais si demain, je change ma class qui gère mysql, je vais devoir éditer tous les appels à la précédente class ? |
caribouuu a écrit : ben ouais, si tu remplaces une classe par une autre, forcément tu risques de devoir faire des modifications au niveau de tout ce qui faisait appel à cette classe. |
Si c'est une de tes grandes préoccupations, je te suggère de bâtir ton projet autour d'un injecteur de dépendances. Deux exemples ici :
http://pimple.sensiolabs.org/
https://github.com/symfony/DependencyInjection (L'injecteur de dépendance de Symfony2, mais étant donné qu'il n'a pas de documentation intégrée tu risques de galérer à l'intégrer)
Marsh Posté le 14-09-2011 à 19:25:32
provencal_le_gaulois a écrit : Hello, |
Merci pour ce trés bon lien cher Avignonais
J'ai commencé à créer d'autre classe à partir de la classe Article, et j'ai notamment déplacer la connexion PDO. Du coup je l'incorpore avec un "global $conn;"
Par contre j'ai un message étrange "Fatal error: Call to a member function prepare() on a non-object" on line 45
Code :
|
Etrange car si je remet la ligne de connexion PDO, je n'ai plus le message... Une idée ?
Marsh Posté le 03-09-2011 à 12:40:14
Bonjour,
Je cherche à développer un site avec php en poo.
J'ai lu beaucoup de tuto à ce sujet, mais comme bien souvent les exemples sont trés théoriques et peu transposable à un projet concret. Bref...
J'ai cru comprendre qu'il faut considérer mysql comme un objet, et j'ai donc récupérer une classe php trés bien faite sur github (pourquoi réinventer la roue ?)
Du coup je m'attaque à mon objet "article" et je me rend compte que pour manipuler mes articles (affichage notament) j'ai besoin "d'actions" avec mysql : logique.
De trés bon tutos et dépots sur github, font directement appels dans l'objet "article" à des requetes sql.
Seulement si demain je change ma class mysql, je vais devoir modifier tout mes objets (objet article) qui y fait appel... et du coup mes "objets" ne sont plus manipulable indépendamment des uns des autres...
Je ne sais pas si je suis trés clair, mais j'aimerai avoir votre avis et votre façon de procéder
---------------
Créer son forum gratuit | Mon beau blog phpBB caÿ le mal :o