Upgrade to KH 3.3.0
This commit is contained in:
145
includes/kohana/system/classes/Kohana/Controller.php
Normal file
145
includes/kohana/system/classes/Kohana/Controller.php
Normal file
@@ -0,0 +1,145 @@
|
||||
<?php defined('SYSPATH') OR die('No direct script access.');
|
||||
/**
|
||||
* Abstract controller class. Controllers should only be created using a [Request].
|
||||
*
|
||||
* Controllers methods will be automatically called in the following order by
|
||||
* the request:
|
||||
*
|
||||
* $controller = new Controller_Foo($request);
|
||||
* $controller->before();
|
||||
* $controller->action_bar();
|
||||
* $controller->after();
|
||||
*
|
||||
* The controller action should add the output it creates to
|
||||
* `$this->response->body($output)`, typically in the form of a [View], during the
|
||||
* "action" part of execution.
|
||||
*
|
||||
* @package Kohana
|
||||
* @category Controller
|
||||
* @author Kohana Team
|
||||
* @copyright (c) 2008-2012 Kohana Team
|
||||
* @license http://kohanaframework.org/license
|
||||
*/
|
||||
abstract class Kohana_Controller {
|
||||
|
||||
/**
|
||||
* @var Request Request that created the controller
|
||||
*/
|
||||
public $request;
|
||||
|
||||
/**
|
||||
* @var Response The response that will be returned from controller
|
||||
*/
|
||||
public $response;
|
||||
|
||||
/**
|
||||
* Creates a new controller instance. Each controller must be constructed
|
||||
* with the request object that created it.
|
||||
*
|
||||
* @param Request $request Request that created the controller
|
||||
* @param Response $response The request's response
|
||||
* @return void
|
||||
*/
|
||||
public function __construct(Request $request, Response $response)
|
||||
{
|
||||
// Assign the request to the controller
|
||||
$this->request = $request;
|
||||
|
||||
// Assign a response to the controller
|
||||
$this->response = $response;
|
||||
}
|
||||
|
||||
/**
|
||||
* Executes the given action and calls the [Controller::before] and [Controller::after] methods.
|
||||
*
|
||||
* Can also be used to catch exceptions from actions in a single place.
|
||||
*
|
||||
* 1. Before the controller action is called, the [Controller::before] method
|
||||
* will be called.
|
||||
* 2. Next the controller action will be called.
|
||||
* 3. After the controller action is called, the [Controller::after] method
|
||||
* will be called.
|
||||
*
|
||||
* @throws HTTP_Exception_404
|
||||
* @return Response
|
||||
*/
|
||||
public function execute()
|
||||
{
|
||||
// Execute the "before action" method
|
||||
$this->before();
|
||||
|
||||
// Determine the action to use
|
||||
$action = 'action_'.$this->request->action();
|
||||
|
||||
// If the action doesn't exist, it's a 404
|
||||
if ( ! method_exists($this, $action))
|
||||
{
|
||||
throw HTTP_Exception::factory(404,
|
||||
'The requested URL :uri was not found on this server.',
|
||||
array(':uri' => $this->request->uri())
|
||||
)->request($this->request);
|
||||
}
|
||||
|
||||
// Execute the action itself
|
||||
$this->{$action}();
|
||||
|
||||
// Execute the "after action" method
|
||||
$this->after();
|
||||
|
||||
// Return the response
|
||||
return $this->response;
|
||||
}
|
||||
|
||||
/**
|
||||
* Automatically executed before the controller action. Can be used to set
|
||||
* class properties, do authorization checks, and execute other custom code.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function before()
|
||||
{
|
||||
// Nothing by default
|
||||
}
|
||||
|
||||
/**
|
||||
* Automatically executed after the controller action. Can be used to apply
|
||||
* transformation to the response, add extra output, and execute
|
||||
* other custom code.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function after()
|
||||
{
|
||||
// Nothing by default
|
||||
}
|
||||
|
||||
/**
|
||||
* Issues a HTTP redirect.
|
||||
*
|
||||
* Proxies to the [HTTP::redirect] method.
|
||||
*
|
||||
* @param string $uri URI to redirect to
|
||||
* @param int $code HTTP Status code to use for the redirect
|
||||
* @throws HTTP_Exception
|
||||
*/
|
||||
public static function redirect($uri = '', $code = 302)
|
||||
{
|
||||
return HTTP::redirect($uri, $code);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks the browser cache to see the response needs to be returned,
|
||||
* execution will halt and a 304 Not Modified will be sent if the
|
||||
* browser cache is up to date.
|
||||
*
|
||||
* $this->check_cache(sha1($content));
|
||||
*
|
||||
* @param string $etag Resource Etag
|
||||
* @return Response
|
||||
*/
|
||||
protected function check_cache($etag = NULL)
|
||||
{
|
||||
return HTTP::check_cache($this->request, $this->response, $etag);
|
||||
}
|
||||
|
||||
} // End Controller
|
Reference in New Issue
Block a user