Bonjour,
Je post ici, parce que j'avoue là j'aimerai bien comprendre ce que me fait php, c'est à dire n'importe quoi.
Imaginons deux classes
Petit test, pour me prouver que si une méthode est appelée si elle est redéfinie dans le fils, c'est la déclaration du fils qui est executée.
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
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
46
47
48
49
50
51 <?php class pere { function a() { print 'jappelle papa a()<br>'; $this->b(); } function b() { print 'jappelle papa b()<br>'; $this->c(); } function c() { print 'jappelle papa c()<br>'; $this->d(); } protected function d() { print 'jappelle papa d()<br>'; } } class fils extends pere { function a() { print 'jappelle fils a()<br>'; parent::a(); } function b() { print 'jappelle fils b()<br>'; parent::b(); } function d() { print 'jappelle fils d()<br>'; } } $toto = new fils(); $toto->a(); print '<hr>'; $toto->c(); ?>
le résultat de ce bout de code est
jappelle fils a()
jappelle papa a()
jappelle fils b()
jappelle papa b()
jappelle papa c()
jappelle fils d()
jappelle papa c()
jappelle fils d()
Alors je ne comprend pas pourquoi dans un code un peu plus complexe, il appelle la déclaration de la classe parente en lieu et place de celle de la classe (au cours d'un appel dans la classe parente, il n'utilise pas sa redéfinition)
Partager