Bonjour!
Je suis confronté comme cela à du arrivé à d'autres que moi Le multi héritage en php !
Comment le simuler puisque que nativement apparemment cela n'est pas possible en php.

Alors en faisant des recherche je suis tombé sur ce lien :
http://jf-lepine.developpez.com/tuto...tiple-php/#LII

J'ai effectivement besoin d'un multi héritage ou dans le cadre d'un développement j'ai une class Main.Class.php
Qui dois hérité de base d'une class model et d'une class view pour chargé les vue que je souhaite.

Mais elle peut aussi avoir besoin d'une class form, session, check etc...
Je voudrai ne pas devoir redéclarer des objet pour les utilisé donc faire un héritage.

Maintenant mon problème :

Je me suis basé sur la première méthode donnée donc avec le code qui va avec

Mais de mon coté quand je j'exécute le code je me retrouve avec une erreur :

Fatal error: Class 'Parent2' not found in
Donc ma class n'est pas chargé.
Pour essayer autre chose avant ma class du coup j'ai fait un :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
<?php
include('Parent1.php');
include('Parent2.php');
include('Parent3.php');
Ce qui me donne un autre résultat :

Cette fonction est héritée de la classe parent2
Notice: Undefined variable: funcName in C:\Program Files (x86)\EasyPHP-12.1\www\multi\Child.php on line 43

Notice: Undefined variable: funcName in C:\Program Files (x86)\EasyPHP-12.1\www\multi\Child.php on line 43

Fatal error: Uncaught exception 'Exception' with message 'The attribute2 attribute doesn't exist' in C:\Program Files (x86)\EasyPHP-12.1\www\multi\Child.php:45 Stack trace: #0 C:\Program Files (x86)\EasyPHP-12.1\www\multi\Child.php(56): Child->__get('attribute2') #1 {main} thrown in C:\Program Files (x86)\EasyPHP-12.1\www\multi\Child.php on line 45
Donc ont peut voir que ma classe Parent2 est chargée !

Mais après cela ne colle plus je ne comprend du coup pas trop le problème..

Si vous avez une solution ?
Merci : )

Voici le code Complet de la classe Récupérer via le tuto :
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
52
53
54
55
56
<?php
include('Parent1.php'); //Mon ajout
include('Parent2.php'); //Mon ajout
include('Parent3.php'); //Mon ajout
class Child extends Parent1 {
    private $_tExtends          = array('Parent2', 'Parent3');
    private $_tExendInstances   = array();
 
    /**
     * Constructeur
     * création des instances de chaque classe mère
     */
    public function __construct() {
        // ::::: build instance for each parent class :::::
        foreach($this->_tExtends as $className){
			$this->_tExendInstances[] = new $className;
		}
    }
 
    /**
     * Méthode magique __call()
     * On va reporter chaque appel sur une des instances des classes mères
     * @param string $funcName
     * @param array $tArgs
     * @return mixed
     */
    public function __call($funcName, $tArgs) {
        foreach($this->_tExendInstances as &$object) {
            if(method_exists($object, $funcName)) return call_user_func_array(array($object, $funcName), $tArgs);
        }
        throw new Exception("The $funcName method doesn't exist");
    }
 
    /**
     * Méthode magique __get()
     * On va reporter chaque lecture d'attribut (accesseur) sur une des instances des classes mères
     * @param string $varName
     * @return mixed
     */
    public function __get($varName) {
        foreach($this->_tExendInstances as &$object) {
            $tDefinedVars   = get_defined_vars($object);
            if(property_exists($object, $funcName)) return $object->{$varName};
        }
        throw new Exception("The $varName attribute doesn't exist");
    }
}
 
 
$oChild = new Child;
 
// appel d'une méthode parente
$oChild->method2(); // affiche "called in parent 2"
 
// lecture d'une variable
echo $oChild->attribute2; // affiche "demo"
Merci à vous.