Ho letto da qualche parte che è meglio passare un oggetto nel costruttore piuttosto che istanziarlo in esso.
Quindi invece di
public function __construct() {
$this->user = new User();
// more stuff...
}
Dovrei fare
public function __construct($user) {
$this->user = $user;
// more stuff...
}
Ma poi quello che succede è qualcosa del genere:
$user = new User();
// generate routes...
$router->get('/article', function() use ($user)) {
$page = new Views\ArticlePage($user);
// more stuff...
}
E la mia domanda è cosa succede quando il codice come sopra è annidato, e stiamo iniettando molte più dipendenze. Il codice finisce per essere più difficile da capire.
$router->get('/article', function() use ($router, $db, $user, $request, $and, $more, $stuff, $needed)) {
$page = new Views\ArticlePage($view , $db, $user);
// do more things....
}
Che cos'è un rimedio a questo? O quando diventa ok creare nuovi oggetti (se mai è così)