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, that's why it is inheriting from a new base controller ContainerAwareController
that has a get
method...