Bonjour,
Je ne comprends pas la ligne de code suivante:
Quelqu'un pourrait m'expliquer svp ?Code:$objet1->objectref =& $unautreobjet;
Papy !
Version imprimable
Bonjour,
Je ne comprends pas la ligne de code suivante:
Quelqu'un pourrait m'expliquer svp ?Code:$objet1->objectref =& $unautreobjet;
Papy !
Salut !
C'est une affectation de référence.
De la doc sur les références : http://fr.php.net/manual/fr/language...es.whatare.php
Pour le chemin :
Qu'affichera ce petit script ? ;)Code:
1
2
3
4
5
6
7
8 <?php $a = 'Bonjour Papy214 !' ; $b =& $a ; $a = 'Au revoir Papy214 !' ; echo $b ; ?>
Au revoir Papy214 !
Salut l'Ami, la je fais le malin ... :D
Par contre ton lien me fait découvrir que dans une fonction il faut passer par $Global ?? :oops: ben ça va devenir compliqué a gérer 8O
http://fr.php.net/manual/fr/language...ces.whatdo.php
Oui enfin c'est qd même un cas très particulier, seulement si tu veux utiliser une référence visible de l'extérieur et non transmise en paramètre. Bah de toutes façons utiliser global dans une fonction c'est mal :aie:Citation:
Par contre ton lien me fait découvrir que dans une fonction il faut passer par $Global ??
Citation:
Avertissement
Si vous assignez une référence à une variable définie en tant que global dans une fonction, la référence sera visible uniquement à l'intérieure de la fonction. Vous pouvez éviter cela en utilisant le tableau $GLOBALS.
Et si une fonction retourne une référence à une variable qu'elle a elle-même définie, ça donne quoi ?Citation:
Citation:
Avertissement
Si vous assignez une référence à une variable définie en tant que global dans une fonction, la référence sera visible uniquement à l'intérieure de la fonction. Vous pouvez éviter cela en utilisant le tableau $GLOBALS.
Après l'appel de la fonction, $localVar n'existe plus, mais il existe une référence vers cette variable. Un truc qui pourrait s'approcher d'une fermeture.Code:
1
2
3
4
5
6
7 function bizarre() { $localVar = 'foobar'; $ref =& $localVar; return $ref; } $bizarrerie = bizarre();
Aucune idée de ce à quoi ça pourrait servir, je me demande juste quel effet ça donnerait.
Pour en revenir à la question principale, les références sont de moins en moins explicitées en php5 car implicites pour les objets et les tableaux.
Sur les tableaux, pas toujours.
Dans un foreach, on est obligé d'assigner une référence à la clef ou l'élément pour modification.
Code:
1
2 foreach( $t as &$v ) $v++;
Le doute s'étant sournoisement insinué en moi, j'ai voulu vérifier les passage des tableaux aux fonctions.
Il semble que ce soit encore par valeur par défaut
Je vais réviser un peu...Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 <?php $arr = array('a', 'b', 'c', 'd'); print_r ($arr); modifValue($arr); print_r($arr); modifRef($arr); print_r($arr); function modifValue($tab) { $tab[1] = 'modif'; } function modifRef(&$tab) { $tab[1] = 'modif'; }
En fait, je suis "tombé" sur ce code dans le moteur de template TinyButStrong, pour utiliser un objet dans le template. Ce code est peut-être ainsi pour rester compatible avec les anciennes versions de PHP.
Tiens, ça m'amène à une autre question. Je programe aussi en delphi et dans ce langage, on peut compiler différents codes selon la version de delphi utilisée. C'est possible avec PHP ? (pas au niveau compilation évidemment mais éxécution du code).