我正在制作没有框架的MVC网站。您可以帮我在类自动加载中编写代码,以便在类不存在时重定向到404错误页面(已经存在)。
http://cedricjager.com/stream/index.php?p=non_existant_class => 404页
class Autoload {
static function register() {
spl_autoload_register (['Autoload', 'myAutoload']);
}
static function myAutoload($class_name) {
$class = ucfirst($class_name);
require 'Models/' . $class . '.php';
}
}
class Router {.....
elseif ($p === '404') {
$this->controller->error();
}
谢谢
答案 0 :(得分:2)
答案 1 :(得分:0)
最简单的选择是使用file_exists,即
if(file_exists('Models/' . $class . '.php')) {
require 'Models/' . $class . '.php';
} else {
header('Location: 404.php');
}
这应该为您解决问题:)
答案 2 :(得分:0)
我希望它的代码可以为您提供帮助
static function myAutoload($class_name)
{
$class = ucfirst($class_name);
$file = "Models/{$class}.php";
try {
if (!file_exists($file)) {
throw new Exception('File doesn\'t exists', 404);
}
require $file;
} catch (Exception $e) {
$message = $e->getMessage(); // File doesn't exists
$code = $e->getCode(); //404
// show your 404 error
// or rewrite to 404 url
}
}