php简单实现 mvc
实现 MVC 的基本结构
MVC(Model-View-Controller)是一种常见的软件设计模式,用于分离业务逻辑、数据和界面。以下是 PHP 中实现 MVC 的简单步骤。
目录结构
创建以下目录结构:
app/
controllers/
models/
views/
public/
index.php
入口文件 (public/index.php)
负责初始化并路由请求:
require '../app/controllers/Controller.php';
require '../app/models/Model.php';
$controller = isset($_GET['c']) ? $_GET['c'] : 'Home';
$action = isset($_GET['a']) ? $_GET['a'] : 'index';
$controllerClass = $controller . 'Controller';
require "../app/controllers/$controllerClass.php";
$instance = new $controllerClass();
$instance->$action();
基础控制器 (app/controllers/Controller.php)
提供控制器基类:
class Controller {
protected function render($view, $data = []) {
extract($data);
require "../app/views/$view.php";
}
}
示例控制器 (app/controllers/HomeController.php)
实现具体业务逻辑:

class HomeController extends Controller {
public function index() {
$model = new Model();
$data = $model->getData();
$this->render('home/index', ['data' => $data]);
}
}
模型 (app/models/Model.php)
处理数据逻辑:
class Model {
public function getData() {
return ['title' => 'MVC Example', 'content' => 'Welcome to MVC'];
}
}
视图 (app/views/home/index.php)
显示数据:
<!DOCTYPE html>
<html>
<head>
<title><?= $data['title'] ?></title>
</head>
<body>
<h1><?= $data['content'] ?></h1>
</body>
</html>
URL 访问方式
通过以下 URL 访问:

http://example.com/public/index.php?c=Home&a=index
路由改进
可以使用更优雅的路由方式,例如通过 .htaccess 实现:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ public/index.php?url=$1 [QSA,L]
然后修改入口文件解析 URL 参数。
自动加载
使用 spl_autoload_register 自动加载类:
spl_autoload_register(function ($class) {
$paths = [
'../app/controllers/',
'../app/models/'
];
foreach ($paths as $path) {
$file = $path . $class . '.php';
if (file_exists($file)) {
require $file;
}
}
});
这个简单实现展示了 MVC 的核心概念,实际项目中可能需要更复杂的路由、依赖注入和错误处理机制。






