. namespace hoplite\http; /*! This abstract class is the base for handling all requests and filling out response objects. */ abstract class Action { /*! \var RootController */ private $controller; /*! Creates a new action with a reference to the RootController. @param RootController */ public function __construct($controller) { $this->controller = $controller; } /*! Accesses the RootController */ public function controller() { return $this->controller; } /*! Called before the Action is Invoked(). */ public function FilterRequest(Request $request, Response $response) {} /*! Performs the action and fills out the response's data model. */ public abstract function Invoke(Request $request, Response $response); /*! Called after this has been Invoked(). */ public function FilterResponse(Request $request, Response $response) {} }