POO et DB - Version imprimable +- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org) +-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38) +--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51) +--- Sujet : POO et DB (/showthread.php?tid=4598) |
RE: POO et DB - NicoMSEvent - 18-04-2010 excellentes réponses Zamentur, je n'aurais pas mieux expliqué Zamentur a écrit :Donc si tu unset() chaque référence quand tu n'en a plus besoin tu détruit l'objet. Le unset d'un objet va se servir du destructeur. (met un echo dans le destructeur, tu verras le comportement ) Je me sert beaucoup du __tostring pour n'importe que objet, ça me permet de faire un "echo $mon_objet"; et ça m'imprime l'état de l'objet, ou ce que j'ai envie (pour ma db, je fais ça en fin de script, et ça me retourne le nombre de requêtes de la page)
RE: POO et DB - Kihmé - 18-04-2010 Merci pour les réponses, en gros avec une instanciation de connexion je peux avoir plusieurs connections (une connexion par utilisateur utilisant toutes la même instanciation) Pour les objets donc ils persistent le temps de l'exécution du script, donc leur durée de vie est contenu entre mon ouverture <?php et ma fermeture ?> ? Je demande ça car ayant fait de la poo en java et c# ça me parait étrange. Voilà sinon avec ça je pense que je n'aurais plus qu'à me lancer RE: POO et DB - NicoMSEvent - 18-04-2010 en fait, ton système existe juste le temps de chargement de la page. (même si tu as plusieurs scripts php dans ta page) Ce que tu charges comme objets pour une page (ou un utilisateur) est indépendant des autres pages (ou utilisateurs). Ton singleton (connexion db) ne restera ouverte et instancié que le temps de vie de ta page, et que pour ta page. RE: POO et DB - Ter Rowan - 18-04-2010 y a une nuance par rapport à java, on avait du mal à communiquer avec mes collègues javaistes et moi avant qu'on ne comprenne une différence, alors je te l'expose : a priori, l'instanciation singleton en java est unique quelque soit les utilisateurs connectés (je crois qu on peut cependant gérer des singletons par thread ou un truc comme ça) en php, ça ne marche pas comme ça, en paraphrasant nico, ton utilisateur lance un script, ce qui se passe dedans n'est que pour lui. ==> Si tu as 10 connectés, en java 1 singleton ==> Si tu as 10 connectés, en php 10 singletons L'intérêt du singleton php est un peu moindre, mais il évite au moins d'avoir n connexions lorsque tu inclus n script autonomes ayant chacun besoin du dit singleton. enfin on en était arrivé là de nos discussions, ça se trouve c'est une grossse bêtise que je poste ^^ RE: POO et DB - NicoMSEvent - 18-04-2010 chaque page délivrée par le serveur apache est un thread. Donc, il est normal que l'utilisateur ne voit que les objets instanciés pour lui. Pour faire communiquer les utilisateurs entre eux, il faut passer par la DB, par de fichiers, pas des sockets... ou ce que tu veux, mais tout n'est pas accessible a n'importe qui par n'importe quel moyen Comme les objets ne voient que leur méthodes(fonctions) et attributs, et que conceptuellement les variables globales sont proscrites, le plus propre et naturel est de passer par un singleton, pour la connexion a la DB (c'est ce que j'en tire comme conclusion apres 3 mois de pratique de la POO en PHP) RE: POO et DB - Kihmé - 18-04-2010 et bien merci beaucoup pour toutes ces réponses, je vois beaucoup mieux, je pense finir mes modélisations objets ce soir, j'ai mon analyse, mon interface et ma bdd de faites donc j'attaque le code. Je pense être bien armé du coup. RE: POO et DB - Kihmé - 29-04-2010 J'en appelle encore à votre aide. Je suis en train de faire ma classe de connexion, je me suis inspiré de celle de Nico en très grande partie, mais j'ai un soucis sur la création de mon instance, je n'ai peut être pas compris comment faire la différence entre PDO et la classe que j'ai créée, je sais pas, je m'embrouille là donc si quelqu'un peut jeter un coup d'oeil. Merci message d'erreur : Code : Notice: Undefined variable: hostname in C:\wamp\www\Glyndwiz\connection.php on line 22 ma classe connection : Code : <?php mon contrôleur : Code : <?php RE: POO et DB - Ter Rowan - 29-04-2010 edit deux fois je dis que des conneries ^^ RE: POO et DB - christouphe - 29-04-2010 je te passe la mienne comme exemple: Code PHP :
et un exemple d'utilisation: Code PHP :
RE: POO et DB - Ter Rowan - 29-04-2010 tu ne construis jamais ta classe telle que ton code est fait puisque personne n'appelle le constructeur du coup tu n'initialises jamais les données de la classe d'ailleurs les données de la classe ne s'appelle pas par $toto mais $this->toto ou self::$toto c'est ce que dit tes warning il ne reconnait pas les variables passées en paramètre de new pdo |