JeuWeb - Crée ton jeu par navigateur
[PHP] Pointeur or not pointeur ? - 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 : [PHP] Pointeur or not pointeur ? (/showthread.php?tid=5733)

Pages : 1 2


[PHP] Pointeur or not pointeur ? - Argorate - 13-10-2011

Hello,

je souhaiterais savoir si quelqu'un peut me renseigner au niveau de la gestion des objets en php.

quand c'est que le langage utilise implicitement des pointeurs et quand c'est qu'il crée et stock véritablement des objets? si je veux dupliqué un objet es ce que $toto = $objet suffit ou es-ce que ça ne sera qu'un pointeur? et dans l'autre sens, si $toto devient bien une copie de l'objet, comment faire si on veux juste faire un alias (et donc pointer sur l'objet au lieu de le dupliquer)?

Voilà, merci pour toutes informations pouvant m'aider sur le sujet Wink


RE: [php OO] Pointeur or not pointeur? - Sephi-Chan - 13-10-2011

Il n'y a pas de pointeurs en PHP, seulement des références.
Seuls les données scalaires (chaînes, nombres, etc.) sont passés par copie, les tableaux et objets sont passés par référence.

Si tu prends un objet en argument et que tu l'altère, toutes les variables qui le référencent seront affectées.

Je te recommande de lire avec attention l'article de Julien Pauli sur Maîtrise de la gestion des variables en PHP.


RE: [php OO] Pointeur or not pointeur? - niahoo - 13-10-2011

Naaaa, les tableaux sont passés par copie, il n'y a que les objets qui ne le sont pas.

En php 5 :
Les variables qui contiennent les objets ne sont pas des références, en fait elles ne contiennent qu'un identifiant d'objet dont php se sert pour trouver l'objet en mémoire. Ce ne sont ni des références, ni des pointeurs, mais de simples id. Donc que tu passes tes variables par référence ou par copie, ça ne change rien quand elles contiennent un ID d'objet car tu n'a pas accès à cet ID, tu peux juste communiquer avec l'objet, ou réassigner la variable à autre chose (et dans ce cas, si tu l'as passée par référence tu détruis l'objet)


RE: [php OO] Pointeur or not pointeur? - Sephi-Chan - 13-10-2011

Oups, c'est effectivement en Ruby que les tableaux sont passés par référence. ^^



RE: [PHP] Pointeur or not pointeur ? - niahoo - 13-10-2011

Mais en ruby tout est objet non ? les pseudo scalaires sont clonés ?

Sinon argo pour dupliquer un objet il te faut le cloner http://fr.php.net/clone


RE: [PHP] Pointeur or not pointeur ? - Sephi-Chan - 13-10-2011

Les scalaires sont immutable. Smile


RE: [PHP] Pointeur or not pointeur ? - niahoo - 13-10-2011

Ben faut savoir, c'est des scalaires ou des objets ?


RE: [PHP] Pointeur or not pointeur ? - Sephi-Chan - 13-10-2011

Il n'y a pas d'opposition. Les scalaire sont des données atomiques (un nombre, une chaîne, une regexp, etc.) contiennent qu'une donnée atomique, pas composte (un tableau, un hash). Et en l'occurrence, ces données atomiques sont immutable.


RE: [PHP] Pointeur or not pointeur ? - Argorate - 13-10-2011

ok, je savais pour l'histoire du passage des arguments d'une fonction, que seul les objets resteraient affecter, mais je ne savais pas comment les dupliquer du coup, donc niahoo encore une fois au bon endroit au bon moment avec la bonne réponse (dommage qu'il n'y est plus le système de réputation je t'aurais mis +1 si ce n'était pas déjà fait :p)
Je ne connaissais pas le mot clé "clone" qui répond très bien a la question du coup, merci Wink

Et grossomodo, même si c'est pas "pointeur" au sens C du terme, un truc qui contient l'id d'un objet pour le retrouver en mémoire, a mon sens c'est un pointeur (par définition ça "pointe sur"...) m'enfin là je chipote Smile



RE: [PHP] Pointeur or not pointeur ? - niahoo - 13-10-2011

je m'en fous du système de réputation Smile
mais je suis content de t'avoir aidé.

je comprends que ruby différencie les types d'objet mais que tous les objets n'ont pas le même grade