call-time pass by reference etc...

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : call-time pass by reference etc...

Re: call-time pass by reference etc...

par xTG » 20 févr. 2011, 21:31

Ouep, les objets sont passés par référence automatiquement.

Re: call-time pass by reference etc...

par moogli » 20 févr. 2011, 19:53

A verifier mais de memoire lenpassage d'objet ce fait par defaut par reference, si tu veux une copie il faut utiliser la fonction clone.

@+

Re: call-time pass by reference etc...

par Bosse.cie » 20 févr. 2011, 18:43

Ah ok, il faut donc juste éviter la redondance.

Je vais voir ça.

Merci

EDIT : Ça marche, merci.

Re: call-time pass by reference etc...

par xTG » 20 févr. 2011, 17:44

En fait je me suis mal exprimé (ou plutôt je n'ai pas tout dit).
C'est à définir dans le prototype de la fonction mais par la suite tu n'as rien à préciser lors de son utilisation.
Exemple :
<?php
function tri(&$tab) // définition de la fonction : passage par référence
{
  sort($tab);
}

$tab = array(0 => 'B', 1 => 'Z', 2 => 'A');
print_r($tab);
echo"<br />";
tri($tab); // utilisation de la fonction sans rien préciser
print_r($tab);
?>
Array ( [0] => B [1] => Z [2] => A )
Array ( [0] => A [1] => B [2] => Z )

Re: call-time pass by reference etc...

par Bosse.cie » 20 févr. 2011, 17:17

Euh, oui, mais c'est voulu.
Je veux dire par là, que je ne vois pas l'utilité de faire une copie d'un tableau qui peut-être relativement important, dans une fonction qui en créera un deuxième, pour me le renvoyer pour que je le recopie dans le premier tableau.
Beaucoup de ressources et plus de boulot.

Ce n'est plus possible de passer une adresse de tableau ?

Re: call-time pass by reference etc...

par xTG » 20 févr. 2011, 16:48

Avec PHP 5(ou une certaine version de la 4 je ne sais plus) il n'est plus nécessaire de passer des tableaux et des objets par référence.
Enlèves donc le &. ;)

call-time pass by reference etc...

par Bosse.cie » 20 févr. 2011, 16:12

Bonjour,

Toujours dans la découverte des messages pas graves, j'ai ce message qui revient systématiquement lorsque je fais appel à une fonction en passant en argument, une référence à un tableau.

Le message exact :
Deprecated: Call-time pass-by-reference has been deprecated in /var/www/version2/saisie_paye1.php on line 152

Un exemple de l'appel (j'en ai un stock qui déclenche ce message)

ecr_f_tempo ($nom_fich, &$tab_net, 2); //ecriture du net dans le fichier temporaire
J'imagine qu'il s'agit de &tab_net qui est un tableau, dont je veux passer la référence, pour qu'il soit directement modifié dans la fonction ecr_f_tempo.

Par contre au niveau de l'anglais, je ne suis pas très performant, c'est le moins que l'on puisse dire.
Le terme Call-time me laisse de marbre quoi.

Ça signifie quoi tout ça ?

Et comment éviter ce message ? (hormis en baissant le niveau d'affichage des messages).

Merci pour l'aide

Michel