php mcv 实现
PHP MVC 实现
MVC(Model-View-Controller)是一种常见的软件设计模式,用于分离应用程序的逻辑、数据和界面。以下是使用PHP实现MVC架构的基本方法。
目录结构
典型的MVC项目目录结构如下:
project/
├── app/
│ ├── controllers/
│ ├── models/
│ ├── views/
│ └── core/
├── public/
│ └── index.php
└── config/
核心组件
模型(Model)
模型负责数据处理和业务逻辑。创建一个基础模型类:
// app/core/Model.php
class Model {
protected $db;
public function __construct() {
$this->db = new PDO('mysql:host=localhost;dbname=test', 'username', 'password');
}
}
具体模型继承基础模型:
// app/models/UserModel.php
class UserModel extends Model {
public function getUsers() {
$stmt = $this->db->query("SELECT * FROM users");
return $stmt->fetchAll(PDO::FETCH_ASSOC);
}
}
视图(View)
视图负责展示数据。创建一个简单的视图类:
// app/core/View.php
class View {
public function render($viewName, $data = []) {
extract($data);
require "app/views/$viewName.php";
}
}
示例视图文件:

<!-- app/views/users/index.php -->
<html>
<body>
<?php foreach ($users as $user): ?>
<p><?= $user['name'] ?></p>
<?php endforeach ?>
</body>
</html>
控制器(Controller)
控制器处理用户请求并协调模型和视图:
// app/core/Controller.php
class Controller {
protected $model;
protected $view;
public function __construct() {
$this->view = new View();
}
}
具体控制器实现:
// app/controllers/UserController.php
class UserController extends Controller {
public function __construct() {
parent::__construct();
$this->model = new UserModel();
}
public function index() {
$users = $this->model->getUsers();
$this->view->render('users/index', ['users' => $users]);
}
}
路由处理
在入口文件中实现简单的路由:

// public/index.php
require '../app/core/autoload.php';
$request = $_SERVER['REQUEST_URI'];
switch ($request) {
case '/users':
$controller = new UserController();
$controller->index();
break;
default:
http_response_code(404);
echo '404 Not Found';
break;
}
自动加载
实现自动加载类:
// app/core/autoload.php
spl_autoload_register(function ($className) {
$file = str_replace('\\', '/', $className) . '.php';
if (file_exists($file)) {
require $file;
}
});
数据库配置
创建配置文件:
// config/database.php
return [
'host' => 'localhost',
'dbname' => 'test',
'username' => 'root',
'password' => ''
];
进阶改进
对于更复杂的项目,可以考虑以下改进:
使用依赖注入容器管理对象创建 实现更灵活的路由系统 添加中间件支持 引入模板引擎 实现ORM替代直接PDO操作
这种基本实现展示了PHP中MVC模式的核心概念,可以根据项目需求进行扩展和优化。






