php mvc实现
PHP MVC 实现方法
MVC(Model-View-Controller)是一种常见的软件架构模式,用于分离业务逻辑、数据和界面。以下是实现PHP MVC框架的基本方法。
项目结构
典型的MVC项目结构如下:
app/
controllers/
models/
views/
public/
index.php
入口文件
在public/index.php中初始化应用并处理请求:
require '../app/bootstrap.php';
$router = new Router();
$router->dispatch($_SERVER['REQUEST_URI']);
路由处理
创建路由器类处理URL映射:
class Router {
public function dispatch($url) {
// 解析URL获取控制器和方法
$parts = explode('/', trim($url, '/'));
$controller = $parts[0] ?: 'home';
$action = isset($parts[1]) ? $parts[1] : 'index';
$controllerClass = ucfirst($controller).'Controller';
if(class_exists($controllerClass)) {
$controllerInstance = new $controllerClass();
if(method_exists($controllerInstance, $action)) {
$controllerInstance->$action();
}
}
}
}
控制器实现
控制器处理业务逻辑并协调模型和视图:

class HomeController {
public function index() {
$model = new HomeModel();
$data = $model->getData();
$view = new View('home/index');
$view->render($data);
}
}
模型实现
模型处理数据操作和业务逻辑:
class HomeModel {
public function getData() {
// 数据库操作示例
$db = Database::getInstance();
return $db->query('SELECT * FROM posts');
}
}
视图实现
视图负责展示数据:
class View {
protected $path;
public function __construct($template) {
$this->path = "../app/views/{$template}.php";
}
public function render($data = []) {
extract($data);
include $this->path;
}
}
数据库连接
单例模式管理数据库连接:

class Database {
private static $instance;
private $connection;
private function __construct() {
$this->connection = new PDO('mysql:host=localhost;dbname=test', 'user', 'pass');
}
public static function getInstance() {
if(!self::$instance) {
self::$instance = new self();
}
return self::$instance;
}
public function query($sql) {
return $this->connection->query($sql);
}
}
自动加载
使用spl_autoload_register实现类自动加载:
spl_autoload_register(function($className) {
$file = "../app/" . str_replace('\\', '/', $className) . '.php';
if(file_exists($file)) {
require $file;
}
});
配置管理
创建配置文件集中管理设置:
return [
'database' => [
'host' => 'localhost',
'name' => 'test',
'user' => 'root',
'pass' => ''
]
];
错误处理
自定义错误处理提升用户体验:
set_exception_handler(function($e) {
error_log($e->getMessage());
http_response_code(500);
echo "An error occurred";
});
以上实现提供了PHP MVC框架的基本组件,可以根据需求扩展功能如中间件、依赖注入等。






