Lol non saranno due ma ben felice di spiegare anche se sara' piu difficile far capire
la struttura che il problema.
n.b. scrivo gli esempi a mano libra quindi perdonate se ci sono errori sintattici ma il mio fine e' far capire la struttura non produrre un codice funzionante.
Ho una classe elemento e una classe insieme che ha una lista di elementi
Codice PHP:
class elemento {
public $dato;
public __construct ($in) {
$this->dato = $in;
}
}
class lista {
public $listadati = array();
public __construct ($num) {
for ($i = 0; i < $num; $i ++) {
$this->listadati[] = new elemento($num);
}
}
}
ora crea altri due classi che ereditano le prime elementoHtml e listaHtml
Codice PHP:
class elementoHtml extends elemento {
public __construct ($in) {
parent::__construct($in);
}
public toHtml() {
return "<span>$this->dato</span>";
}
}
class listaHtml extends lista {
public __construct ($num) {
parent::__construct($num);
}
public toHtml() {
foreach ($this->listadati as $celem) {
echo $celem->toHtml()."
\n";
}
}
}
il mio obbiettivo e' che il costruttore lista allocasse una array di obj elemento se la classe
era lista e elementoHtml se la classe era listaHtml.
e avevo fatto cosi
Codice PHP:
class lista {
private $listaType;
public $listadati = array();
public __construct ($num) {
if (strcmp(__CLASS__,"lista")) {
$this->listaType = "elemento";
} else {
$this->listaType = "elementoHtml";
}
for ($i = 0; i < $num; $i ++) {
$this->listadati[] = new $listaType($num);
}
}
}
ma e' sbagliato perche' __CLASS__ e' sempre lista io pensavo invece che facesse riferimento all'oggetto istanziato quindi cambiasse a seconda dei casi.
Alla fine ho risolto cosi ...
Codice PHP:
class lista {
private $listaType;
public $listadati = array();
public __construct ($num,$ltype = "elemento") {
$this->listaType = $ltype;
for ($i = 0; i < $num; $i ++) {
$this->listadati[] = new $listaType($num);
}
}
}
class listaHtml extends lista {
public __construct ($num) {
parent::__construct($num,"elementoHtml");
}
public toHtml() {
foreach ($this->listadati as $celem) {
echo $celem->toHtml()."
\n";
}
}
}
cosi funziona pero magari ci sono metodi migliori se hai idee in merito 
Andrea