escludendo il fatto che in quel codice che hai postato non c'è nessun richiamo alla funzione page::title e che quindi "main"::setTitle non è stato mai richiamato e quindi un getTitle non ti ritorna nulla, ma hai idea, anche minima, di cosa voglia dire che una classe ne estende un'altra e come si usa tale cosa? Perché, e lo dico a te perché non sei il primo che commette lo stesso errore, non è mica che instanziando due classi, la main e la page, e operando sulla page, allora viene alterato lo stato di main, si altera solo lo stato di page. Estendere una classe non vuol dire che due instanze saranno legate tra di loro per sempre, ma vuol dire che la classe che estende eredita tutti i metodi e proprietà pubblici/protetti della classe madre e in più aggiunge/modifica (se vuole) comportamenti.
Tanto per fare un esempio:
Chiaro?Codice PHP:
class Lavoratore{
public function descriviti(){
return "Io sono ".$this->myJob();
}
public function myJob(){
return "un lavoratore";
}
}
class Avvocato extends Lavoratore{
public function myJob(){
return "un avvocato";
}
}
//allora avrai che il seguente codice:
$avvocato = new Avvocato(); //nota che instanzio prima un oggetto Avvocato di Lavoratore
echo $avvocato->descriviti(); //nota che nella classe Avvocato non è definito direttamente un metodo "descriviti" ma lo eredita dalla classe madre
$lavoratore = new Lavoratore();
echo $lavoratore->descriviti();
//otterrai in output:
//Io sono un avvocato
//Io sono un lavoratore