当前位置:首页 > 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;
    }
});

配置管理

创建配置文件:

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

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

php实现mvc

标签: phpmvc
分享给朋友:

相关文章

git php实现

git php实现

Git 与 PHP 的集成实现 使用 PHP 执行 Git 命令 通过 PHP 的 exec()、shell_exec() 或 passthru() 函数可以直接调用 Git 命令,适用于服务器端操作…

php长连接实现

php长连接实现

PHP 长连接实现方法 长连接(Keep-Alive)允许客户端与服务器在一次TCP连接中发送和接收多个HTTP请求/响应,减少重复建立连接的开销。以下是PHP中实现长连接的几种方式: 配置HTTP…

php队列的实现

php队列的实现

PHP队列的实现方式 PHP中实现队列功能可以通过多种方式,根据需求选择适合的方案: 使用数组实现基础队列 PHP数组本身支持队列操作,利用array_push和array_shift函数: $q…

php实现接口

php实现接口

PHP 实现接口的方法 在 PHP 中,接口(Interface)用于定义一组方法的规范,而不实现具体功能。类可以实现一个或多个接口,并必须实现接口中定义的所有方法。 定义接口 接口使用 inter…

php实现的分页

php实现的分页

PHP 实现分页的方法 基本分页逻辑 分页的核心在于计算总页数、当前页码以及数据偏移量。假设每页显示 10 条数据: $current_page = isset($_GET['page']) ?…

php 实现排序

php 实现排序

PHP 实现数组排序的方法 PHP 提供了多种内置函数和方法来实现数组排序,适用于不同的排序需求。以下是一些常见的排序实现方式: 使用 sort() 函数对数组进行升序排序 sort() 函数对数组…