Bonjour,
je viens d'attaquer une 2e lecture du bouquin de Bersini sur la POO...et je me suis arrêté sur un exemple de code PHP qui me surprend un peu...
Code php : 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
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 <html> <head> <title>test</title> </head> <body> <?php class O3 { private $c; public function __construct($initC){ $this->c = $initC; } public function incrementeC(){ $this->c++; } public function afficheC(){ print("C=$this->c<br/>"); } } class O2 { public function jeTravaillePourO2(O3 $lienO3){ $lienO3->incrementeC(); $lienO3->afficheC(); } public function jeCreeUnObjet03(O3 &$lienO3) { /* avec ou sans le & */ $lienO3 = new O3(7); $lienO3->incrementeC(); $lienO3->afficheC(); } } $unO3 = new O3(6); $unO2 = new O2(); $unO2->jeTravaillePourO2($unO3); $unO3->afficheC(); $unO2->jeCreeUnObjet03($unO3); $unO3->afficheC(); ?> </body> </html>
donc dans ce code, la classe O2 comporte 2 méthodes :
- jeTravaillePourO2 à qui on passe une objet instance de la classe O3
- jeCreeUnObjet03 à qui on passe en argument le même objet.
D'après ce que j'ai compris, les objets sont automatiquement passés par référence, donc c'est le cas pour les 2 méthodes.
Cela explique l'affichage obtenu :
Mais de ce fait, le new de la ligne 31 provoque la création d'un nouvel objet instance de la classe O3, mais il ne sert pas à grand chose, vu que si on l'enlève, on obtient le même affichage (essai effectué). Qu'en pensez-vous ?C=7
C=7
C=8
C=8
Partager