Controllers
Names
Singular resource name, Controllers that control a resource must use the singular resource name.
PHP
// GOOD
final class CourseController {}
// BAD
final class CoursesController {}
Defaults
Try to keep controllers simple and stick to the default CRUD keywords (index, create, store, show, edit, update and destroy). Extract a new controller if you need other actions. Laravel Documentation
| Verb | URI | Action | Route Name |
|---|---|---|---|
| GET | /photos | index | photos.index |
| GET | /photos/create | create | photos.create |
| POST | /photos | store | photos.store |
| GET | /photos/{photo} | show | photos.show |
| GET | /photos/{photo}edit | edit | photos.edit |
| PUT/PATCH | /photos/{photo} | update | photos.update |
| DELETE | /photos/{photo} | delete | photos.destroy |
This is a loose guideline that doesn’t need to be enforced, but keeping to the standards of Laravel is always a good idea.
Method Injection
Use method injection for Request and other dependencies
PHP
// GOOD
public function update(Request $request, Course $course)
{
$this->validate($request, ['email' => ['email']);
$name = $request->input('name');
}
// BAD
public function update(Course $course)
{
$this->validate(request(), ['email' => ['email']);
$name = request('name');
}
Param Order
Inject route params, then other dependencies
PHP
// GOOD
public function update(Team $team, Request $request, DetachFromTeamToIndividualGracePeriodAction $detachAction)
{
...
}
// BAD
public function update(Request $request, Team $team, DetachFromTeamToIndividualGracePeriodAction $detachAction)
{
...
}
The same for scalar GET params (good example: public function update(int $teamId, Request $request).
Table of Contents
