Attualmente ho una classe con dipendenze strettamente accoppiate e il costruttore della classe non ha attualmente alcun parametro. Sto cercando di essere in grado di passare facoltativamente in diverse dipendenze senza modificare la firma del costruttore e quindi di interrompere le applicazioni che attualmente usano la classe.Valori predefiniti per l'iniezione delle dipendenze
sono arrivato fino a questo modello:
class Car {
private $engine;
public function __construct($options = array()) {
if (isset($options['engine']) {
$this->engine = $options['engine'];
} else {
$this->engine = new Engine();
}
}
}
questo modo auto potrebbe ancora essere creato (con un motore di default) con new car()
, o passando in un motore personalizzato: new Car(array('engine' => new CustomEngine()))
.
È un modo corretto per farlo? Che problemi ha questo con la manutenibilità?
Sei sulla strada giusta! L'iniezione di dipendenza è esattamente questa. – colburton
Penso che questo si riferisca a http://stackoverflow.com/q/8295060/1767861, dovresti leggere le risposte date :) –