Bonjour,
Je ne comprends pas la ligne de code suivante:
Quelqu'un pourrait m'expliquer svp ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part $objet1->objectref =& $unautreobjet;
Papy !
Bonjour,
Je ne comprends pas la ligne de code suivante:
Quelqu'un pourrait m'expliquer svp ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part $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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 ...
Par contre ton lien me fait découvrir que dans une fonction il faut passer par $Global ??ben ça va devenir compliqué a gérer
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 malPar contre ton lien me fait découvrir que dans une fonction il faut passer par $Global ??
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:
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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).
Il y a au moins la solution de spécifier la version utilisée dans le .htaccess.
Tu peux aussi spécifier la version de php dans l'extension : .php4 ou .php5
Code : Sélectionner tout - Visualiser dans une fenêtre à part SetEnv PHP_VER 5

Partager