La sémantique du '&' a donc changée entre PHP4 et PHP5 ... pas étonnant vu le nombre d'aberrations qui existent en PHP.
Je ne trouve ça nulle part dans la doc (en tout cas ni ou ils décrivent leur modèle objet, ni ou ils décrivent le passage de paramètres), ... En gros, utiliser des & revient a simuler pour un scalaire le comportement par défaut appliqué aux objets.
Typiquement, écrire (et utiliser =& pour affecter):
function &modify_int_both(&$anInt) { $anInt++; return $anInt; }
Revient a simuler le comportement suivant qui a lieu d'office pour un objet (avec = comme opérateur d'affectation):
function modify_A($anA) { $anA->increment(); return $anA; }
OK, soit ... Et quelqu'un a t'il des exemples pertinents des passages par références partiels ?
function modify_int_ref(&$anInt) { $anInt++; return $anInt; }
function &modify_int_retRef($anInt) { $anInt++; return $anInt; }
function modify_A_ref(&$anA) { $anA->increment(); return $anA; }
function &modify_A_retRef($anA) { $anA->increment(); return $anA; }
[^] # Re: Inquiétudes
Posté par Sébastien Mosser . En réponse à la dépêche IP-formation : la formation administrateur Linux menacée. Évalué à 3.
Je ne trouve ça nulle part dans la doc (en tout cas ni ou ils décrivent leur modèle objet, ni ou ils décrivent le passage de paramètres), ... En gros, utiliser des & revient a simuler pour un scalaire le comportement par défaut appliqué aux objets.
Typiquement, écrire (et utiliser =& pour affecter):
function &modify_int_both(&$anInt) { $anInt++; return $anInt; }
Revient a simuler le comportement suivant qui a lieu d'office pour un objet (avec = comme opérateur d'affectation):
function modify_A($anA) { $anA->increment(); return $anA; }
OK, soit ... Et quelqu'un a t'il des exemples pertinents des passages par références partiels ?
function modify_int_ref(&$anInt) { $anInt++; return $anInt; }
function &modify_int_retRef($anInt) { $anInt++; return $anInt; }
function modify_A_ref(&$anA) { $anA->increment(); return $anA; }
function &modify_A_retRef($anA) { $anA->increment(); return $anA; }