I currently use one controller per action. One of the problems—sort of—I encountered is when naming the methods of these controllers, which only have one.
Should I use a generic method name like get()
or should I encapsulate all my controllers into one and name its methods after the action they do, e.g. indexAction()
, userListAction()
?
2 Answers
I like the Ruby on Rails "RESTful routes" convention: each controller represents a resource (a noun), and there are 7 conventional actions:
Note that resources don't have to map directly to models/database tables - for e.g. password reset, you may "create" a password_reset resource to request a new password, and "update" it to set the new password, even though behind the scenes, it only modifies your user model.
I would not combine all the controllers into one. It is easier to manage lots of small classes than one great big one. This is particularly true when there are multiple developers. For method naming, it doesn't matter much, but you may want to use different names for "GET" and "POST" requests, like "get" and "post". Usually there are standard practices for a given web framework.