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"