Classe originale
class HomeController
{
function __construct()
{
$this->setPhpRenderer('Module');
$this->repository = new HomeRepository($id);
$this->proposalService = new ProposalService($this->repository);
$this->quickAdd = new QuickAdd($this->repository);
}
}
/*
* Instantiation is nice and clean:
*/
$home = new HomeController();
Utilizzo dell'iniezione delle dipendenze
class HomeController
{
function __construct(
PhpRenderer $renderer,
HomeRepository $repository,
ProposalService $proposalService,
QuickAdd $quickAdd)
)
{
$this->renderer = $renderer;
$this->repository = $repository;
$this->proposalService = $proposalService;
$this->quickAdd = quickAdd;
}
}
/*
* Instantiate Class components
*/
$renderer = PhpRenderer('Module');
$repository = new HomeRepository($id);
$proposalService = new ProposalService($this->repository);
$quickAdd = new QuickAdd($this->repository);
/*
* Instantiate class -
*/
$home = new HomeController(
$renderer,
$repository,
$proposalService,
$quickAdd
);
Domanda
Sto osservando che il DI aggiunge un carico di codice di nave e voglio mantenere la mia istanziazione bella e pulita pur usando i principi dell'iniezione di dipendenza.
Un pensiero che ho avuto è invece di passare singoli componenti di classe, mettere quei componenti in un array
. Questo aggiungerà ovviamente del codice extra per gestire array
, ma tutti i componenti della classe saranno nascosti all'interno.