Bonjour

Si j'ai 3 classes A, B et C avec A <- B -< C , et que je veuille depuis une instance de C, appeler une fonction de A qui est surchargée dans B, est-ce qu'il y a une solution ?

Plus précisément, voici le code (créé pour l'exemple bien sur)

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
 
	class A {
 
		function __construct() {
			echo "A\n";
		}
 
		function truc(){
			echo __CLASS__."\n";
		}
 
	}
 
	class B extends A{
 
		function __construct() {
			parent::__construct();
			echo "B\n";
		}
 
		function truc(){
			parent::truc();
		}
 
	}
 
	class C extends B{
 
		function __construct() {
			parent::__construct();
			echo "C\n";
		}
 
		function truc(){
			parent::truc();
		}
 
 
		function trucA(){
 
		}
 
	}
 
	$c = new C();
	$c->truc();
Résultat de l'exécution:

A
B
C
A

Normal !

Mais si dans C, fonction TrucA(), je voulais appeler la fonction Truc de A, possible ou pas ?

J'ai bien tenté un (A)$this->Truc() mais ça passe pas.
Il semble que les seuls types types autorisés dans un cast soient les types généraux et le type object.

Je précise bien sur que je pourrais trouver une autre solution et que cette question n'est là qu'à but d'information et apprentissage

Je sais que dans d'autre langages, c'est impossible mais comme php
sait faire beaucoup de choses ...

Papy !