The `Controller` class is the fundamental building block of your application's request/response
cycle. Controllers are organized around a single logical entity, usually one or more model
classes (i.e. `lithium\data\Model`) and are tasked with performing operations against that
entity.
Each controller has a series of 'actions' which are defined as class methods of the `Controller`
classes. Each action has a specific responsibility, such as listing a set of objects, updating an
object, or deleting an object.
A controller object is instantiated by the `Dispatcher` (`lithium\action\Dispatcher`), and is
given an instance of the `lithium\action\Request` class, which contains all necessary request
state, including routing information, `GET` & `POST` data, and server variables. The controller
is then invoked (using PHP's magic `__invoke()` syntax), and the proper action is called,
according to the routing information stored in the `Request` object.
A controller then returns a response (i.e. using `redirect()` or `render()`) which includes HTTP
headers, and/or a serialized data response (JSON or XML, etc.) or HTML webpage.
For more information on returning serialized data responses for web services, or manipulating
template rendering from within your controllers, see the settings in `$_render` and the
`lithium\net\http\Media` class.