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

  FORUM HardWare.fr
  Programmation
  PHP

  variables membres sont des objets -> bonne/mauvaise idée ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

variables membres sont des objets -> bonne/mauvaise idée ?

n°1349540
jamesbond2
Posté le 19-04-2006 à 12:21:15  profilanswer
 

Bonjour,
 
J'ai un problème pour concevoir mes objets. J'utilise pas mal de variable membre qui sont en fait des objets. Cela me permet assez facilement d'accéder à mes objets, par l'intermédiaire de l'objet dont il dépend.
 
Je m'explique, j'ai 2 objets, un objet client et un objet commande. Dans mon objet commande, j'ai une variable membre 'monClient', qui est un objet client. Lors d'un commande j'accède à mes données client comme suit :

Code :
  1. $obj_commande->monClient->getVille();


 
Mais je ne sais pas s'il s'agit d'une bonne ou d'une mauvaise façon de voir les choses.
 
D'un coté je voudrais essayer de faire une hiérarchie d'objets cohérente et d'un autre je ne voudrais pas me retrouver coincé si mes objets sont trop lourds à utiliser.
 
Merci de vos réponses

mood
Publicité
Posté le 19-04-2006 à 12:21:15  profilanswer
 

n°1349553
jamesbond2
Posté le 19-04-2006 à 12:42:10  profilanswer
 

J'ai oublié de dire que je ne fais pas de modélisation uml, mais merise. Mon problème vient peut être de là ?

n°1349583
skeye
Posté le 19-04-2006 à 13:36:15  profilanswer
 

ça marche très bien...quel est le soucis? :??:
Si tu veux éviter que ce soit trop lourd évite les recopies, par contre, pour les objets...passe-les par référence :
Si tu les passes en paramètre de fonctions n'oublie pas le &, et idem lors des affectations.


Message édité par skeye le 19-04-2006 à 13:36:45

---------------
Can't buy what I want because it's free -
n°1349597
jamesbond2
Posté le 19-04-2006 à 13:50:44  profilanswer
 

Bien sur que ça marche, mais je voulais seulement avoir confirmation que c'était la bonne façon de voir les choses.

Citation :


Si tu veux éviter que ce soit trop lourd évite les recopies, par contre, pour les objets...passe-les par référence :  
Si tu les passes en paramètre de fonctions n'oublie pas le &, et idem lors des affectations.


Peux tu être un peu plus précis pour les affectations (exemple)
 
Merci

n°1349599
skeye
Posté le 19-04-2006 à 13:53:07  profilanswer
 

bah au lieu de faire

Code :
  1. $truc = $monjoliobjet;


 
tu fais
 

Code :
  1. $truc =& $monjoliobjet;


 
Par contre si tu touches à $truc tu modifies aussi $monjoliobjet dans ce cas, donc attention à voir si c'est bien adapté à ton utilisation.

Message cité 1 fois
Message édité par skeye le 19-04-2006 à 13:53:33

---------------
Can't buy what I want because it's free -
n°1349622
Djebel1
Nul professionnel
Posté le 19-04-2006 à 14:19:11  profilanswer
 

précisons que c'est pour PHP4, en PHP5 les variables sont passées en référence par défaut, donc pas besoin de mettre &

n°1349627
skeye
Posté le 19-04-2006 à 14:20:15  profilanswer
 

Djebel1 a écrit :

précisons que c'est pour PHP4, en PHP5 les variables sont passées en référence par défaut, donc pas besoin de mettre &


Ah tiens, j'apprends un truc...[:petrus75]
...et ya moyen de faire l'inverse, alors, en php5? [:autobot]


---------------
Can't buy what I want because it's free -
n°1349633
Djebel1
Nul professionnel
Posté le 19-04-2006 à 14:22:04  profilanswer
 

euh ouais mais me demande pas comment :D

n°1349634
skeye
Posté le 19-04-2006 à 14:22:39  profilanswer
 

c'est ballot, de pas pouvoir faire une copie d'objet, quand même...[:jean-guitou]


---------------
Can't buy what I want because it's free -
n°1349641
Djebel1
Nul professionnel
Posté le 19-04-2006 à 14:23:57  profilanswer
 

sisi tu peux, mais jsais plus comment ^^

mood
Publicité
Posté le 19-04-2006 à 14:23:57  profilanswer
 

n°1349648
Djebel1
Nul professionnel
Posté le 19-04-2006 à 14:26:51  profilanswer
 

jviens de retrouver, faut utiliser la méthode __clone()

n°1349654
skeye
Posté le 19-04-2006 à 14:30:12  profilanswer
 

'tain c'est pratique.[:pingouino]


---------------
Can't buy what I want because it's free -
n°1349678
Djebel1
Nul professionnel
Posté le 19-04-2006 à 14:45:59  profilanswer
 

bah personnellement je trouve ça carrément pratique de pas devoir mettre des & partout ^^

n°1349702
skeye
Posté le 19-04-2006 à 14:57:22  profilanswer
 

oué m'enfin bonjour la compatibilité des anciens scripts, quoi...[:moule_bite]


---------------
Can't buy what I want because it's free -
n°1349742
Djebel1
Nul professionnel
Posté le 19-04-2006 à 15:20:45  profilanswer
 

oui me demande aussi comment ça peut tourner, je pense que les scripts PHP4 qui tournent sur PHP5 sont pas faits en objet :p

Message cité 1 fois
Message édité par Djebel1 le 19-04-2006 à 15:22:18
n°1349752
skeye
Posté le 19-04-2006 à 15:28:04  profilanswer
 

Djebel1 a écrit :

oui me demande aussi comment ça peut tourner, je pense que les scripts PHP4 qui tournent sur PHP5 sont pas faits en objet :p


euh, si, une partie des miens, par exemple.[:moule_bite]
'fin bref, heureusement qu'il y a pas d'effets de bord à la con comme ça, j'aurais été bien emmerdé de débugger ça...[:moule_bite]


---------------
Can't buy what I want because it's free -
n°1352631
jamesbond2
Posté le 24-04-2006 à 12:41:04  profilanswer
 

skeye a écrit :

bah au lieu de faire

Code :
  1. $truc = $monjoliobjet;


 
tu fais
 

Code :
  1. $truc =& $monjoliobjet;


 
Par contre si tu touches à $truc tu modifies aussi $monjoliobjet dans ce cas, donc attention à voir si c'est bien adapté à ton utilisation.


 
Donc en fait il serait plus judicieux de faire des instanciations à l'extérieur des objets et de leurs passer ensuite le référence de l'objet à utiliser. (Exemple : Créer un objet client à l'extérieur de la classe commande, puis passer la référence de l'objet client à la classe commande).  
 
Cependant on est obligé d'instancier à chaque fois le client et la commande. Alors que ma methode consistait à instancier mon client dans le constructeur de ma commande. Comme ça je n'ai que la commande à instancier, le client s'instancie automatiquement.
 
Mais peut être cette dernière méthode allourdit-elle l'objet commande inutilement.
 
Laquelle des deux methodes est selon vous la plus optimisée.
 
Merci

n°1352633
skeye
Posté le 24-04-2006 à 12:45:45  profilanswer
 

Effectivement, si l'objet "client" n'a pas d'existence propre avant la création de l'objet "commande" qui le contient, je ne vois pas d'intérêt à l'instancier en-dehors pour le passer ensuite en référence. :jap:


---------------
Can't buy what I want because it's free -

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

  variables membres sont des objets -> bonne/mauvaise idée ?

 

Sujets relatifs
Enumérer les variables JavascriptIdée sur la réalisation d'un Didactitiel de CV en PHP
JSP/JSTL et passage de variables...(débutant)[Problème de variables dans des conditions][Python]
Probleme de sérialisation XML de collection d'objets VB .NetVisibilité des membres static d'une classe ...
suivi d'objets(résolu) [Java 3D] Comment centrer la vue sur des objets WaveFront
(résolu) [Java 3D] Changer l'apparence d'objets WaveFrontiText Créer ses propres objets
Plus de sujets relatifs à : variables membres sont des objets -> bonne/mauvaise idée ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR