当前位置:首页 > PHP

php简单实现 mvc

2026-02-15 06:30:52PHP

实现MVC的基本结构

在PHP中实现MVC(Model-View-Controller)模式,需要将应用程序分为三个核心部分:模型(Model)处理数据逻辑,视图(View)负责展示,控制器(Controller)协调模型和视图。

目录结构示例

app/
    controllers/
        HomeController.php
    models/
        UserModel.php
    views/
        home.php
index.php

创建控制器

控制器负责处理用户请求并调用相应的模型和视图。以下是一个简单的控制器示例:

// app/controllers/HomeController.php
class HomeController {
    public function index() {
        $model = new UserModel();
        $users = $model->getUsers();
        require 'app/views/home.php';
    }
}

创建模型

模型负责与数据库交互并处理业务逻辑。以下是一个简单的模型示例:

// app/models/UserModel.php
class UserModel {
    public function getUsers() {
        // 模拟数据库查询
        return [
            ['id' => 1, 'name' => 'Alice'],
            ['id' => 2, 'name' => 'Bob']
        ];
    }
}

创建视图

视图负责展示数据。以下是一个简单的视图示例:

php简单实现 mvc

// app/views/home.php
<!DOCTYPE html>
<html>
<head>
    <title>User List</title>
</head>
<body>
    <h1>Users</h1>
    <ul>
        <?php foreach ($users as $user): ?>
            <li><?php echo $user['name']; ?></li>
        <?php endforeach; ?>
    </ul>
</body>
</html>

入口文件

入口文件负责初始化应用程序并路由请求:

// index.php
require 'app/controllers/HomeController.php';
require 'app/models/UserModel.php';

$action = isset($_GET['action']) ? $_GET['action'] : 'index';

$controller = new HomeController();
$controller->$action();

路由改进

可以通过更灵活的路由机制来处理不同的控制器和动作:

php简单实现 mvc

// index.php
$controllerName = isset($_GET['controller']) ? $_GET['controller'] : 'Home';
$actionName = isset($_GET['action']) ? $_GET['action'] : 'index';

$controllerClass = $controllerName . 'Controller';
require "app/controllers/$controllerClass.php";

$controller = new $controllerClass();
$controller->$actionName();

自动加载类

使用spl_autoload_register避免手动包含每个类文件:

// index.php
spl_autoload_register(function ($className) {
    $file = 'app/' . str_replace('\\', '/', $className) . '.php';
    if (file_exists($file)) {
        require $file;
    }
});

$controllerName = isset($_GET['controller']) ? $_GET['controller'] : 'Home';
$actionName = isset($_GET['action']) ? $_GET['action'] : 'index';

$controllerClass = $controllerName . 'Controller';
$controller = new $controllerClass();
$controller->$actionName();

数据库连接

在模型中添加数据库连接逻辑:

// app/models/UserModel.php
class UserModel {
    private $db;

    public function __construct() {
        $this->db = new PDO('mysql:host=localhost;dbname=test', 'username', 'password');
    }

    public function getUsers() {
        $stmt = $this->db->query('SELECT * FROM users');
        return $stmt->fetchAll(PDO::FETCH_ASSOC);
    }
}

错误处理

添加基本的错误处理机制:

// index.php
set_exception_handler(function ($e) {
    error_log($e->getMessage());
    header('HTTP/1.1 500 Internal Server Error');
    echo 'An error occurred';
});

try {
    // 原有的路由代码
} catch (Exception $e) {
    throw $e;
}

标签: 简单php
分享给朋友:

相关文章

php实现搜索功能

php实现搜索功能

实现基本的搜索功能 在PHP中实现搜索功能通常涉及数据库查询。以下是一个简单的实现方式,假设使用MySQL数据库: <?php // 连接数据库 $conn = new mysqli('loc…

php实现表单

php实现表单

PHP 表单基础实现 创建一个简单的 PHP 表单需要 HTML 表单结构和 PHP 处理脚本。以下是一个完整的示例: HTML 表单部分 (form.html) <form action=…

php实现注册

php实现注册

注册功能实现步骤 数据库准备 创建用户表,包含字段如id、username、password、email等。示例SQL: CREATE TABLE users ( id INT AUTO_I…

php 实现https

php 实现https

在 PHP 中实现 HTTPS 确保 PHP 应用通过 HTTPS 协议安全传输数据,可以通过以下几种方式实现: 配置服务器强制 HTTPS 在 Web 服务器(如 Apache 或 Nginx)中…

php底层实现

php底层实现

PHP底层实现的核心机制 PHP是一种解释型脚本语言,其底层实现涉及多个关键组件协同工作。理解这些机制有助于优化代码性能和深度调试。 Zend引擎架构 Zend引擎是PHP的核心执行器,采用编译器与…

vue简单实现删除

vue简单实现删除

Vue 删除功能实现 使用 v-for 和 splice 方法删除数组元素 <template> <div> <ul> <li v-…