function() passage d'arguments(que se passe t il en interne ?) - 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 : function() passage d'arguments(que se passe t il en interne ?) (/showthread.php?tid=4872) Pages :
1
2
|
function() passage d'arguments(que se passe t il en interne ?) - php_addict - 04-06-2010 bonsoir ma question est un peu bête peut être mais j'aimerais comprendre le fonctionnement en interne du passage d'arguments dans une function() avec php5 exemple: Code : $tableau=Array ('0' => 1231' , '1' => 7893' , '2' => '45654' ); que se passe t il exactement? est ce que toutes les données sont transmissent à la function() ou est ce que simplement un pointeur mémoire est transmis à la fonction ? d'après ce que j'ai pu comprendre le passage d'argument par reference n'est plus supporté dans php5 (ca tombe bien je ne savait pas que cela eu existé...) bonne soirée RE: function() passage d'arguments(que se passe t il en interne ?) - Shudrum - 04-06-2010 Sisisi, les références existent dans php 5, et il est très conseillé de les utiliser pour gratter de la mémoire. L'idée, si jamais tu as ton tableau : Code PHP :
Dans ta fonction traite_mon_tableau : Code PHP :
En fait, php fait une copie de $tableau dans $tableau_recu, cela double donc l'utilisation de la mémoire. Si tu utilises une référence (avec &, voir plus bas), cela n'envoie que le pointeur == gain de mémoire. Par contre, si tu modifies ton tableau, il est logique que cela se répercute : Code PHP :
Alors que sans référence (sans le &) : Code PHP :
RE: function() passage d'arguments(que se passe t il en interne ?) - php_addict - 04-06-2010 merci pour toutes tes précisions j'avais eu ceci: Citation :Warning: Call-time pass-by-reference has been deprecated; If you would like to pass it by reference, car j'avais fait cela: Code : traite_mon_tableau(&$tableau) :$ RE: function() passage d'arguments(que se passe t il en interne ?) - jo_link_noir - 04-06-2010 (04-06-2010, 09:33 PM)Shudrum a écrit : Sisisi, les références existent dans php 5, et il est très conseillé de les utiliser pour gratter de la mémoire.Mais ça ne sert à rien de mettre une référence quand ce n'est pas nécessaire. Php optimise le passage de paramètre en vessant ‑justement‑ une référence, puis une copie si besoin lorsque la variable est modifier : copie à l'écriture. Voir les exemple de debug_zval_dump. RE: function() passage d'arguments(que se passe t il en interne ?) - php_addict - 04-06-2010 (04-06-2010, 11:07 PM)jo_link_noir a écrit : Mais ça ne sert à rien de mettre une référence quand ce n'est pas nécessaire. Php optimise le passage de paramètre en vessant ‑justement‑ une référence, puis une copie si besoin lorsque la variable est modifier : copie à l'écriture. c'est ce que j'étais en train de tester, c'est quand même bien foutu php5, on fait n'importe quoi et php gère au mieux... RE: function() passage d'arguments(que se passe t il en interne ?) - Shudrum - 05-06-2010 (04-06-2010, 11:07 PM)jo_link_noir a écrit :(04-06-2010, 09:33 PM)Shudrum a écrit : Sisisi, les références existent dans php 5, et il est très conseillé de les utiliser pour gratter de la mémoire.Mais ça ne sert à rien de mettre une référence quand ce n'est pas nécessaire. Php optimise le passage de paramètre en vessant ‑justement‑ une référence, puis une copie si besoin lorsque la variable est modifier : copie à l'écriture. Merci beaucoup, tu m'apprends un truc génial là. Grosso merdo, faut demander une ref que lorsque l'on veut modifier directement la variable ? RE: function() passage d'arguments(que se passe t il en interne ?) - jo_link_noir - 05-06-2010 Ouaip, et quand tu voix un paramètre passé par référence c'est pars-qu'il sera modifié. En tout cas, c'est comme ça que je fonctionne . RE: function() passage d'arguments(que se passe t il en interne ?) - Argorate - 06-06-2010 (04-06-2010, 11:54 PM)php_addict a écrit : c'est quand même bien foutu php5, on fait n'importe quoi et php gère au mieux... C'est ça qui fait que php est un bon language pour moi En tout as c'est bien pratique cette affaire ^^ merci pour linfo! RE: function() passage d'arguments(que se passe t il en interne ?) - NicoMSEvent - 07-06-2010 c'est comique, j'ai justement transformé mon code pour utiliser des références au lieu de passer des objets (et tableau d'objets) en parametre, et ça juste avant ce post! J'ai l'impression d'etre en plein dans le bon mouvement, et de devancer d'un cheveu les idées du forum ^^ Edit : un petit lien qui m'a bien servi : http://www.siteduzero.com/tutoriel-3-91013-allez-plus-loin-avec-les-variables.html RE: function() passage d'arguments(que se passe t il en interne ?) - php_addict - 07-06-2010 Code PHP :
- je ne suis pas certain de comprendre le refcount() - quelle fonction bouffe le moins de mémoire? - la doc de php dit: http://fr.php.net/manual/fr/function.debug-zval-dump.php a écrit :Un refcount de 2, ici, est vraiment inattendu. Tout spécialement si on considère les exemples ci-dessus. Donc, que se passe-t-il ? |