php实现mvc框架
PHP实现MVC框架的基本方法
MVC(Model-View-Controller)是一种常用的软件设计模式,将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。以下是实现一个简单MVC框架的关键步骤。
目录结构设计
app/
controllers/
models/
views/
public/
index.php
.htaccess
app/目录存放核心代码,public/是入口文件和静态资源目录。.htaccess文件用于URL重写。
入口文件设置
在public/index.php中初始化框架:
<?php
require_once '../app/bootstrap.php';
$app = new Core();
$app->run();
路由处理
创建路由类解析URL并调用对应控制器和方法:
class Router {
protected $routes = [];
public function add($route, $params) {
$this->routes[$route] = $params;
}
public function dispatch($url) {
foreach ($this->routes as $route => $params) {
if ($url == $route) {
$controller = $params['controller'];
$action = $params['action'];
$controller = new $controller();
$controller->$action();
}
}
}
}
控制器实现
控制器处理业务逻辑并调用视图:

class PostsController {
public function index() {
$posts = Post::getAll();
View::render('posts/index', ['posts' => $posts]);
}
}
模型设计
模型处理数据操作:
class Post {
public static function getAll() {
$db = new Database();
return $db->query('SELECT * FROM posts');
}
}
视图渲染
视图负责展示数据:
class View {
public static function render($view, $args = []) {
extract($args, EXTR_SKIP);
$file = "../app/views/$view.php";
if (is_readable($file)) {
require $file;
}
}
}
数据库封装
数据库操作类简化数据访问:

class Database {
private $connection;
public function __construct() {
$this->connection = new PDO('mysql:host=localhost;dbname=test', 'user', 'pass');
}
public function query($sql) {
$stmt = $this->connection->prepare($sql);
$stmt->execute();
return $stmt->fetchAll();
}
}
自动加载类
使用spl_autoload_register实现自动加载:
spl_autoload_register(function ($class) {
$file = '../app/' . str_replace('\\', '/', $class) . '.php';
if (file_exists($file)) {
require $file;
}
});
配置文件
创建配置文件存储常量:
define('DB_HOST', 'localhost');
define('DB_NAME', 'test');
define('DB_USER', 'user');
define('DB_PASS', 'pass');
错误处理
设置自定义错误处理:
set_error_handler(function($errno, $errstr, $errfile, $errline) {
throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
});
安全防护
实现基础安全措施:
function escape($string) {
return htmlspecialchars($string, ENT_QUOTES, 'UTF-8');
}
这个基本框架包含了MVC的核心组件,可根据需求进一步扩展功能如中间件、依赖注入等。






