入口文件
一、最简单的入口文件
<?php
define('APP_NAME', 'web'); //应用名称
define('APP_DEBUG', true); //开启调试模式
require '../bootstrap.php';
$engine = new \Timo\Core\Engine();
$engine->start(); // 运行应用
二、增加异常处理的入口文件
\Timo\Core\Exception::handle($e);
这是框架自带异常处理,如果发生异常或错误,请查看/logs/Exception目录下面对应日期的日志
<?php
define('APP_NAME', 'web');
define('APP_DEBUG', true);
require '../bootstrap.php';
$engine = new \Timo\Core\Engine();
// 异常处理
try {
$engine->start();
} catch(Exception $e) {
\Timo\Core\Exception::handle($e);
} catch(Error $e) {
\Timo\Core\Exception::handle($e);
}
三、自定义异常处理
<?php
define('APP_NAME', 'web');
define('APP_DEBUG', true);
require '../bootstrap.php';
$engine = new \Timo\Core\Engine();
// 异常处理
try {
$engine->start();
} catch(Exception $e) {
//跳转到404页面,异常处理和日志记录
$engine->run('error', '_404', ['e' => $e]);
} catch(Error $e) {
$engine->run('error', '_404', ['e' => $e]);
}
自定义异常处理,我们需要增加处理异常的控制器和方法
异常处理控制器
<?php
namespace app\web\controller;
use Timo\Core\Exception;
use Timo\Core\Log;
use Timo\Core\Response;
use Timo\Core\View;
class Error
{
/**
* @param $e Exception
* @return string
* @throws \Timo\Core\Exception
*/
public function _404($e = null)
{
if (!$e instanceof \Exception && !$e instanceof \Error) {
goto eco;
}
$log = [];
$log['Message'] = $e->getMessage();
$log['Code'] = $e->getCode();
$log['File'] = $e->getFile();
$log['Line'] = $e->getLine();
$log['trace'] = explode("\n", $e->getTraceAsString());
if (APP_DEBUG) {
$log['trace'] = print_r($log['trace'], true);
$log['traceArray'] = print_r($e->getTrace(), true);
$html = '<pre>';
foreach ($log as $key => $val) {
$html .= $key . ':' . $val . '<br>';
}
return $html . '</pre>';
}
//记录日志
Log::write(print_r($log, true), 'Error', 'Exception.' . date('Y-m.d'));
eco:
//"HTTP/1.1 404 Not Found"
if (!isset($_GET['sendResponseCode'])) {
Response::sendResponseCode(404);
}
$view = View::instance;
$view->assign('title', '404页面 - TimoPHP');
return $view->render();
}
}
404模版文件
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<script src="<?= $this->res('lib/jQuery/jquery-2.2.3.min.js'); ?>"></script>
<title><?= $this->data['title']; ?></title>
<style>
.box{width: 600px; margin: 100px auto 0;}
.box p{font-family: "Century Gothic","Microsoft yahei"; font-size: 24px;}
</style>
</head>
<body>
<div class="wrapper">
<div class="box">
<p>主银,服务器君找了半天,没找到您要访问的页面!</p>
</div>
</div>
</body>
当我们访问不存在的页面时返回自定义404页面
例如:
http://www.timophp.com/8$#dfj33.php
http://www.timophp.com/YY/999/&93834##%.html