Is it normal that I have to create so many dependencies by hand? No. It is common to use a Dependency Injection component or a Service Container with such capabilities. Again, Symfony comes to the rescue, however, you can also check PHP-DI 4.
Let's see the resulting code in Listing 14 after applying Symfony Service Container component to our application:
class IdeaController extends ContainerAwareController
{
public function rateAction()
{
$ideaId = $this->request->getParam('id');
$rating = $this->request->getParam('rating');
$useCase = $this->get('rate_idea_use_case');
$response = $useCase->execute(
new RateIdeaRequest($ideaId, $rating)
);
$this->redirect('/idea/' . $response->idea->getId());
}
}
The controller has been modified to have access to the container...