当前位置:首页 > PHP

php实现mvc

2026-02-13 14:00:40PHP

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();

路由处理

创建简单的路由类:

class Router {
    public function dispatch() {
        $url = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
        $url = explode('/', trim($url, '/'));

        $controller = isset($url[0]) ? ucfirst($url[0]) . 'Controller' : 'HomeController';
        $action = isset($url[1]) ? $url[1] : 'index';

        if (class_exists($controller)) {
            $controllerInstance = new $controller();
            if (method_exists($controllerInstance, $action)) {
                $controllerInstance->$action();
            } else {
                // 处理404
            }
        } else {
            // 处理404
        }
    }
}

控制器示例

class HomeController {
    public function index() {
        $model = new HomeModel();
        $data = $model->getData();

        $view = new View('home/index');
        $view->render($data);
    }
}

模型实现

class HomeModel {
    public function getData() {
        // 数据库操作或业务逻辑
        return ['title' => 'Welcome', 'content' => 'MVC Example'];
    }
}

视图处理

class View {
    protected $path;

    public function __construct($viewPath) {
        $this->path = "app/views/{$viewPath}.php";
    }

    public function render($data = []) {
        extract($data);
        include $this->path;
    }
}

视图文件示例

app/views/home/index.php

<!DOCTYPE html>
<html>
<head>
    <title><?= $title ?></title>
</head>
<body>
    <h1><?= $content ?></h1>
</body>
</html>

数据库集成

在模型中集成数据库操作:

class UserModel {
    private $db;

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

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

自动加载

实现PSR-4自动加载:

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

配置管理

创建配置文件:

php实现mvc

return [
    'database' => [
        'host' => 'localhost',
        'dbname' => 'test',
        'user' => 'root',
        'pass' => ''
    ]
];

这种实现方式提供了MVC的基本结构,可以根据项目需求进一步扩展,如添加中间件、依赖注入等功能。

标签: phpmvc
分享给朋友:

相关文章

php实现文件上传

php实现文件上传

PHP 文件上传实现方法 在 PHP 中实现文件上传需要处理 HTML 表单和服务器端脚本。以下是详细步骤: 创建 HTML 表单 使用 enctype="multipart/form-data"…

php 购物车实现

php 购物车实现

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

php 实现秒杀

php 实现秒杀

PHP 实现秒杀的关键技术 秒杀系统需要解决高并发、超卖、性能瓶颈等问题。以下是实现秒杀的核心方案: 使用 Redis 预减库存 将商品库存提前加载到 Redis 中,通过原子操作保证库存准确性:…

php数组实现

php数组实现

PHP 数组的基本实现 PHP 数组是一种非常灵活的数据结构,可以存储多个值,并且支持多种类型的键(整数或字符串)。PHP 数组实际上是有序映射(ordered map),可以看作是列表(vector…

php 实现链表

php 实现链表

PHP 实现链表的方法 链表是一种线性数据结构,由节点组成,每个节点包含数据和指向下一个节点的指针。PHP 中可以通过类和对象来实现链表。 定义链表节点类 创建一个 ListNode 类,用于表示链…

php 实现md5

php 实现md5

使用 PHP 内置函数实现 MD5 PHP 提供了 md5() 函数,可以直接计算字符串的 MD5 哈希值。该函数接受一个字符串参数,返回 32 字符的十六进制哈希值。 $string = "H…