OVH Cloud OVH Cloud

Passage par reference deprecated

4 réponses
Avatar
Zouplaz
Bonjour, il y a quelques semaine j'ai fait une tentative d'hébergement chez
amen.fr (php bien sur). J'ai une collection de classes qui utilisent
intensivement le passage de paramètres par références, et lorsque je les
ais testé chez amen j'obtenais des messages du genre (de mémoire, je me
souviens plus très bien) : reference passing is deprecated and may be not
supported in future version of php...

J'ai trouvé ça un peu strange dans la mesure où c'est une fonctionnalité
évidemment indispensable à tout language...

J'ai eu la berlue, ma mémoire me fait défaut ou bien il y a vraiment un
soucis avec ce genre de procédé ?

Merci

4 réponses

Avatar
Bruno Desthuilliers
Zouplaz wrote:
Bonjour, il y a quelques semaine j'ai fait une tentative d'hébergement chez
amen.fr (php bien sur). J'ai une collection de classes qui utilisent
intensivement le passage de paramètres par références, et lorsque je les
ais testé chez amen j'obtenais des messages du genre (de mémoire, je me
souviens plus très bien) : reference passing is deprecated and may be not
supported in future version of php...

J'ai trouvé ça un peu strange dans la mesure où c'est une fonctionnalité
évidemment indispensable à tout language...

J'ai eu la berlue, ma mémoire me fait défaut ou bien il y a vraiment un
soucis avec ce genre de procédé ?

Merci


Je pense que ça doit être lié au fait qu'en PHP5, les passages d'objets
sont systématiquement par référence...

Mes deux centimes,
Bruno

Avatar
Shrom
Zouplaz wrote:

Bonjour, il y a quelques semaine j'ai fait une tentative d'hébergement
chez amen.fr (php bien sur). J'ai une collection de classes qui utilisent
intensivement le passage de paramètres par références, et lorsque je les
ais testé chez amen j'obtenais des messages du genre (de mémoire, je me
souviens plus très bien) : reference passing is deprecated and may be not
supported in future version of php...

J'ai trouvé ça un peu strange dans la mesure où c'est une fonctionnalité
évidemment indispensable à tout language...

J'ai eu la berlue, ma mémoire me fait défaut ou bien il y a vraiment un
soucis avec ce genre de procédé ?

Merci


C'est le passage de cette forme qui est 'deprecated':
function foo( $param ) { ... }
foo( & $param )

il faut déclarer dans la fonction qu'il y a passage par référence.

Par contre si tu fais:
function foo( & $param ) { ... }
foo( $param )
Ca fonctionne parfaitement

Avatar
Khone
Salut

Sauf erreur de ma part, à présent tu dois préciser dans
la déclaration de la fonction si le paramètre est passé par
référence ou par copie.

function bla(&$p)
{
$p ++;
}

et l'appeler comme ça : bla($a)

Khône
Avatar
m-e-
Tu veux parler de ça ?

<?php
function doThat( $base, $add ) {
$base .= ' ' . $add;
}

$my_string = "hello";
doThat( &$my_string, "world"); // WARNING : call-time pass-by-reference has been deprecated
echo $my_string;




function doThatByRef( &$base, $add ) { // le "&" est ici
$base .= ' ' . $add;
}

$my_string = "hello";
doThatByRef( $my_string, "world"); // OK
echo $my_string;
?>


Donc il faut maintenant définir le passage par référence lors de la déclaration de la fonction.