Matthias Noback has a new post to his site today, the first part of a series, looking at making framework-independent controllers for use in a Symfony2 framework-based project.
The general belief is that controllers are the most tightly coupled classes in every application. Most of the time based on the request data, they fetch and/or store persistent data from/in some place, then turn the data into HTML, which serves as the response to the client who initially made the request. [...] In this post I demonstrate that this high level of coupling is definitely not necessary. I will show you how you can decrease coupling a lot by taking some simple steps. We will end with a controller that is reusable in different types of applications, e.g. a Silex application, or even a Drupal application.
In this first part he focuses on a few places where the common practices lead to some unnecessary coupling between the controller and framework:
- Using the framework helper methods
- Using dependency injection (manually injecting instead)
- Making the controller a service instead
The next post in the series will look at the use of annotations and how to refactor them out of the controller to remove yet another coupling point.