Errors and exceptions handling, #16
git-svn-id: svn+ssh://code.netmonsters.ru/svn/majestic/branches/evo@121 4cb57b5f-5bbd-dd11-951b-001d605cbbc5
This commit is contained in:
59
app/ErrorAction.php
Normal file
59
app/ErrorAction.php
Normal file
@ -0,0 +1,59 @@
|
||||
<?php
|
||||
/**
|
||||
* @copyright NetMonsters <team@netmonsters.ru>
|
||||
* @link http://netmonsters.ru
|
||||
* @package Majestic
|
||||
* @subpackage app
|
||||
* @since 2010-02-25
|
||||
* @version SVN: $Id$
|
||||
* @filesource $URL$
|
||||
*/
|
||||
|
||||
class ErrorAction extends ViewAction
|
||||
{
|
||||
|
||||
/**
|
||||
* @var Exception
|
||||
*/
|
||||
protected $exception;
|
||||
|
||||
public function __construct($exception)
|
||||
{
|
||||
$this->exception = $exception;
|
||||
$this->view = FrontController::getInstance()->getView();
|
||||
$this->execute();
|
||||
}
|
||||
|
||||
protected function execute()
|
||||
{
|
||||
$this->template = 500;
|
||||
if ($this->exception instanceof Error404Exception) {
|
||||
$this->template = 404;
|
||||
}
|
||||
}
|
||||
|
||||
protected function getTemplate()
|
||||
{
|
||||
return '/static/' . $this->template;
|
||||
}
|
||||
|
||||
protected function sendHttpCode($code)
|
||||
{
|
||||
if (headers_sent()) {
|
||||
return;
|
||||
}
|
||||
switch ($code) {
|
||||
case 404:
|
||||
header('HTTP/1.0 404 Not Found');
|
||||
break;
|
||||
default:
|
||||
header('HTTP/1.0 500 Internal Server Error');
|
||||
}
|
||||
}
|
||||
|
||||
public function fetch()
|
||||
{
|
||||
$this->sendHTTPCode($this->template);
|
||||
return $this->view->fetch($this->getTemplate());
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user