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

  FORUM HardWare.fr
  Programmation
  PHP

  visibilité des objets en PHP5

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

visibilité des objets en PHP5

n°1223894
speedyop
Posté le 16-10-2005 à 04:21:07  profilanswer
 

dans une classe, j'ai besoin d'utiliser un objet déjà instancié dans le script (ma connection à la BDD), je ne veut pas créer une nouvelle instance de cette connection mais bien utiliser la même à l'intérieur de ma classe (je contabilise par exemple le nombre de requettes effectuées sur la page).
 
déjà que penser vous de cette façon de procéder? les classes doivent être normalement "indépendante", là elle fait appelle à un object instancié dans le script! une méthode pour rendre sa plus propre?
 
bon ceci marchait en PHP4, au début de ma classe je mettait un  
global $myDB ($myDB etant mon objet)
mais avec PHP5 ca ne passe pas!
la methode qui semble marcher c'est d'utiliser a chaque fois le tableaux $GLOBALS, donc a chaque fois que je veux utiliser $myDB à l'intérieur d'une classe, je dois tapper $GLOBALS["myDB"] ce qui est plus long. je ne vois pas trop la différence entre pouvoir acceder à cette objet et ses methodes par $GLOBALS ou directement la déclarer comme global pour la classe.
 
merci de votre aide.

mood
Publicité
Posté le 16-10-2005 à 04:21:07  profilanswer
 

n°1223901
fluminis
Posté le 16-10-2005 à 09:22:28  profilanswer
 

J'ai pas trop touché à PHP5, mais dans les autres langages de programmation objet, ce que j'aurais fait c'est de passer ton objet dans le constructeur de ta classe. Ensuite tu le sockes comme variable membre de ta classe et tu t'en sers ou tu veux :
 

Code :
  1. $myDB = new DB(bla bla bla);
  2. $myA = new A($myDB, ...);


 
avec :
 

Code :
  1. class A {
  2.     var $db;
  3.     function __construct($aDb, ...){
  4.           $db = $aDb;
  5.     }
  6. }


 
voila le principe
 
++bonne prog


---------------
http://poemes.iceteapeche.com - http://www.simuland.net
n°1223910
omega2
Posté le 16-10-2005 à 10:33:46  profilanswer
 

En php5, tu peux rendre une variable globale à la classe (mot clé static) cette variable sera alors partagé par tous les objets de la classe. Il suffit alors de déclarer ta conection comme static dans la classe et quand tu cré un nouvel objet de la classe, tu poura utiliser la conection ouverte par un autre.
voir doc pour plus de détail : http://www.nexen.net/docs/php/anno [...] static.php
 
Sinon, c'est vrai que t'as la possibilité de déclarer ta conection comme globale mais si t'as une variable locale qui a le même nom, il faudrait utiliser $_GLOBALS pour pouvoir les diférencier. Pour éviter l'utilisation de $_GLOBALS, il faut mettre le "global $var;" dans la fonction.
 
Une autre solution, c'est de passer l'objet conection dans les paramettre de la classe ou de la fonction qui l'utilisera. On a alors pas besoin de la déclarer comme globale mais il faut se la trimbaler quasiment partout.


Message édité par omega2 le 16-10-2005 à 10:38:53
n°1223991
speedyop
Posté le 16-10-2005 à 15:36:47  profilanswer
 

merci, je pense que la passer en parametre pour la classe est une bonne solution, ca permet de bien visualiser les dépendances tout de suite, merci.

n°1224132
Je@nb
Kindly give dime
Posté le 16-10-2005 à 22:18:44  profilanswer
 

Tu peux aussi regarder du coté des DesignPattern nottament le Singleton :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  visibilité des objets en PHP5

 

Sujets relatifs
PHP5 - Récupérer la variable d'une URL pour requête dans un flux XMLphp5 et la poo
php4 & les objetsParser du phps avec php5
utilisation d'objets[Jeu] Calculer la visibilité des unités entre elles....
Accès aux objets sous PostgreSQLSérialisation d'objets
Problème de session et objets .....[HTML] Visibilité image
Plus de sujets relatifs à : visibilité des objets en PHP5


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)