Implements single action controller #5
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Background
Dicoding is already using ADR pattern for quite long time. This pattern maps every single route to one action controller. Currently we hard-coded the method name on the route definition, even the method name is static. Take a look below (notice the
actionmethod).The problem with that syntax is it's quite hard to navigate to the action class. Usually we'll block the class name (e.g.
UsersIndexAction) and trigger file search feature. Imagine if we can click-follow the action classes when we reference them using::classsyntax, like:Solution
Laravel introduced single action controller when version 5.3 released. The base idea is using default method for the controller, which is magic method
__invoke. So when a developer defines a route action without method name (or by referencing the class directly), the router will dispatch the request to__invokemethod automatically.This PR tries to backport that feature to Laravel 4.2.
References: