117 lines
1.8 KiB
PHP
Executable file
117 lines
1.8 KiB
PHP
Executable file
<?php
|
|
|
|
namespace b8;
|
|
|
|
use b8\Config;
|
|
use b8\Http\Request;
|
|
use b8\Http\Response;
|
|
use b8\View;
|
|
|
|
/**
|
|
* b8 Abstract Controller class
|
|
* @package b8
|
|
*/
|
|
abstract class Controller
|
|
{
|
|
/**
|
|
* @var Request
|
|
*/
|
|
protected $request;
|
|
|
|
/**
|
|
* @var Response
|
|
*/
|
|
protected $response;
|
|
|
|
/**
|
|
* @var Config
|
|
*/
|
|
protected $config;
|
|
|
|
/**
|
|
* @var View
|
|
*/
|
|
protected $controllerView;
|
|
|
|
/**
|
|
* @var View
|
|
*/
|
|
protected $view;
|
|
|
|
public function __construct(Config $config, Request $request, Response $response)
|
|
{
|
|
$this->config = $config;
|
|
$this->request = $request;
|
|
$this->response = $response;
|
|
}
|
|
|
|
public function hasAction($name)
|
|
{
|
|
if (method_exists($this, $name)) {
|
|
return true;
|
|
}
|
|
|
|
if (method_exists($this, '__call')) {
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Handles an action on this controller and returns a Response object.
|
|
* @return Response
|
|
*/
|
|
public function handleAction($action, $actionParams)
|
|
{
|
|
return call_user_func_array(array($this, $action), $actionParams);
|
|
}
|
|
|
|
/**
|
|
* Initialise the controller.
|
|
*/
|
|
abstract public function init();
|
|
|
|
/**
|
|
* Get a hash of incoming request parameters ($_GET, $_POST)
|
|
*
|
|
* @return array
|
|
*/
|
|
public function getParams()
|
|
{
|
|
return $this->request->getParams();
|
|
}
|
|
|
|
/**
|
|
* Get a specific incoming request parameter.
|
|
*
|
|
* @param $key
|
|
* @param mixed $default Default return value (if key does not exist)
|
|
*
|
|
* @return mixed
|
|
*/
|
|
public function getParam($key, $default = null)
|
|
{
|
|
return $this->request->getParam($key, $default);
|
|
}
|
|
|
|
/**
|
|
* Change the value of an incoming request parameter.
|
|
* @param $key
|
|
* @param $value
|
|
*/
|
|
public function setParam($key, $value)
|
|
{
|
|
return $this->request->setParam($key, $value);
|
|
}
|
|
|
|
/**
|
|
* Remove an incoming request parameter.
|
|
* @param $key
|
|
*/
|
|
public function unsetParam($key)
|
|
{
|
|
return $this->request->unsetParam($key);
|
|
}
|
|
}
|