Non è raccapricciante il metodo __construct, è raccapricciante la definizione che ne dai e come pensi che funzioni. Infatti ti basterebbe fareOriginariamente inviato da Emulman
Santino, io uso questo metodo da tantissimo tempo per le mie webapps e funziona benissimo... __construct inizializza le variabili che vengono usate in una classe, e se nel __construct di una classe ereditata ci metti parent::__construct eredita pure le variabili inizializzate nel __construct della classe madre, per cui non c'è alcun bisogno di ridefinire quelle variabili...quindi non mi sembra tanto raccapricciante anzi aiuta tantissimo a risparmiare tempo e fatica!![]()
e scopriresti che la fraseCodice PHP:
<?php
class Foo{
protected $myVar;
public function __construct(){
$this->myVar = "Hello";
}
}
class Bar extends Foo{
public function sayHello(){
echo $this->myVar.' World!';
}
}
$bar = new Bar();
$bar->sayHello();
è raccapricciante e che ha senso ridefinire il costruttore delle classe figlia e richiamare il costruttore della classe madre solo se HAI BISOGNO di ridefinire il costruttore della classe figlia, e che comunque le "variabili della classe madre" le eredita lo stesso e che, se ridefinisci il costruttore nella classe figlia senza chiamare il parent, al più queste variabili della madre non sono valorizzate, ma la figlia le eredita eccome (ovviamente se la figlia ridefinisce il construct e non richiama parent::__construct, è probabile che a runtime l'oggetto non funzioni come ci si aspetti o che non funzioni affatto)e se nel __construct di una classe ereditata ci metti parent::__construct eredita pure le variabili inizializzate nel __construct della classe madre
Detto questo, @.Kurt, alla fine è anche inutile suggerire di dare uno sguardo ai design pattern, tanto poi ci si perde sui costruttori ... per non parlare di IoC e affini.