Originariamente inviato da nik600
cosa tene sembra di questa soluzione?
non molto buona, per il semplice fatto che in quel modo usi semplicemente un metodo ereditato chiamato __construct_manuale della classe Anagrafica
in poche parole:
parent::__construct_manuale();
sulla terza classe richiama
Anagrafica::__construct_manuale();
ereditato da
Modulo
Il mio metodo invece ti fa usare il costruttore esatto della classe sopra l'ereditata ... per fare un esempio più completo e farti un'idea della portabilità della mia idea guarda questo codice:
codice:
<?php
class __A {
protected $__parent = 0;
function __construct() {
echo "costruttore __A
";
}
}
class __B extends __A {
function __construct() {
if(!(--$this->__parent)) {
echo "costruttore __B
";
}
else
parent::__construct();
}
}
class __C extends __B {
function __construct(){
if(!(--$this->__parent)) {
echo "costruttore __C
";
}
else
parent::__construct();
}
}
class __D extends __C {
function __construct(){
if(!(--$this->__parent)) {
echo "costruttore __D
";
}
else
parent::__construct();
}
}
class __E extends __D {
function __construct() {
// quante classi sopra ?
// 1 => __D, 2 => __C, 3 => __B, >= 4 => __A
$this->__parent = 3;
parent::__construct();
echo "costruttore __E
";
}
}
$e = new __E();
// costruttore __B
// costruttore __E
?>
come puoi notare, specificando quanti genitori sopra vai a usare proprio quel costruttore, senza intaccare o ereditare un metodo in più che rimarrebbe interno alla classe parent. 
[edit]
ovviamente ha senso solo se vuoi poter gestire multi eredità dall' ultima classe, altrimenti non va bene per tutte le gerarchie e dovresti riadattare meglio l'idea 
[edit2]
l'ereditarietà multipla è ritenuta abbastanza "rischiosa" ... non tanto per i linguaggi quanto per l'uso che ne fanno gli sviluppatori. Uno dei motivi principali per il quale non ha sempre senso è che potresti avere due genitori con metodi diversi ma con lo stesso nome e l'ambiguità di scelta potrebbe compromettere le funzionalità dell'erede ... questo ed altro hanno portato gli sviluppatori di tanti linguaggi, PHP compreso, a scegliere di non implementare una cosa tipo
class __C extends __B, __A
il discorso invece è diverso con le interfacce, sono sempre (o nella maggior parte) multiple poichè dichiarano un metodo, non il codice che tale metodo userà
[edit3] [a scanso di equivoci]
di solito l'eredità multipla si usa, nei linguaggi che lo permettono, con classi diverse, non con classi già eredi di super classi
... quindi tutto sommato questo caso non è nemmeno vera eredità multipla ma solo eredità "innestata"