IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[POO] Passage de paramètres et fonctionnement interne de PHP


Sujet :

Langage PHP

  1. #1
    Invité
    Invité(e)
    Par défaut [POO] Passage de paramètres et fonctionnement interne de PHP
    Hello,

    Question qui n'est pas d'un grand intéret, mais c'est toujours utile à savoir...

    Lorsque l'instance d'un objet est passée en paramètre à un autre objet, PHP effectue-il une référence sur cet objet ou une copie ?

    Et dans le cas d'un passage en paramètre d'une instance d'objet dans une simple fonction ?

    Je pense qu'il s'agit de références dans au moins un des deux cas, mais je n'en ai jamais eu la certitude...

    Quelqu'un peut-il confirmer ?

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 882
    Points : 691
    Points
    691
    Par défaut
    salut
    en php5 il s'agit de reference et en php4 de copie sauf si on utilise l'operateur &

  3. #3
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Points : 1 164
    Points
    1 164
    Par défaut
    Si tu veux le vérifer tu dump l'objet avant de l'envoyer à ta fonction, puis à lorsque tu est dans la fonction (ou méthode...).

    Tu vas obenir deux dumps dans ce gout la -> object(stdClass)#34 (0) { }

    Ce qui nous interesse ici c'est le #34, qui semble être d'après mes observations un uoid.
    Mais je n'ai jamais réussi à trouver de confirmation :/

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par ePoX
    Si tu veux le vérifer tu dump l'objet avant de l'envoyer à ta fonction, puis à lorsque tu est dans la fonction (ou méthode...).

    Tu vas obenir deux dumps dans ce gout la -> object(stdClass)#34 (0) { }

    Ce qui nous interesse ici c'est le #34, qui semble être d'après mes observations un uoid.
    Mais je n'ai jamais réussi à trouver de confirmation :/
    Ouias effectivement, j'ai aussi fait cette observation et si on se fit à ces identifieurs, il s'agirait de références dans les deux cas...

    Personne ne confirme ...

    Je vais essayer de me renseigner du coté du Zend Engine...

  5. #5
    Invité
    Invité(e)
    Par défaut
    Voilà, j'ai trouvé de la doc officielle sur le Zend Engine, en gros, pour les versions de PHP utilisant Zend Engine 1 (< PHP 5.0) les objets sont copiés si ils ne sont pas explicitement passés par référence, ça qui confirme ce qui disait jeff_!.

    Pour les versions >= PHP 5.0, apparament ce sont toujours des références qui sont créées...

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 882
    Points : 691
    Points
    691
    Par défaut
    sauf si la compatibilité avec le zend engine 1 est activé

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [POO] Passage d'objet en paramètre
    Par tintin72 dans le forum Langage
    Réponses: 6
    Dernier message: 13/08/2008, 20h06
  2. [PHP-JS] Passage de paramètre d'un script vers PHP
    Par fred_crrm dans le forum Langage
    Réponses: 2
    Dernier message: 13/06/2007, 15h40
  3. [POO] Passage de paramètre par référence.
    Par abidi_niz dans le forum Langage
    Réponses: 3
    Dernier message: 12/10/2006, 12h20
  4. [PHP-JS] Passage de paramètre de Javascript vers fonction Php
    Par winnie82 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 13/07/2006, 10h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo