当前位置:首页 > 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 购物车实现

数据库设计 购物车功能通常需要设计数据库表存储商品和用户信息。常见的表包括products(商品表)、users(用户表)和cart(购物车表)。cart表通常包含字段:id(主键)、user_id(…

php 实现mvc

php 实现mvc

PHP 实现 MVC 架构的方法 MVC(Model-View-Controller)是一种常见的软件设计模式,用于分离业务逻辑、用户界面和用户输入。以下是 PHP 实现 MVC 架构的关键步骤:…

php实现过程

php实现过程

PHP 实现过程 PHP 是一种广泛使用的服务器端脚本语言,特别适合 Web 开发。以下是 PHP 实现过程的关键步骤和注意事项。 安装与配置 下载并安装 PHP,可以从官方 PHP 网站获取最新版…

php session 实现购物车

php session 实现购物车

PHP Session 实现购物车的方法 初始化 Session 在 PHP 脚本的最开始调用 session_start() 函数,确保会话已启用。这通常在页面的顶部完成。 session_sta…

php 实现多继承

php 实现多继承

在PHP中,原生不支持多继承,但可以通过以下几种方法模拟实现类似多继承的功能: 使用 trait Trait是PHP 5.4引入的特性,允许在类中复用代码片段,可以视为一种轻量级的继承机制。一个类可…

php底层实现

php底层实现

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