当前位置:首页 > PHP

php mvc实现

2026-01-14 13:17:33PHP

PHP MVC 实现步骤

模型(Model)层

模型负责数据处理和业务逻辑,通常与数据库交互。创建一个基类模型,其他具体模型继承它。

class Model {
    protected $db;

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

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

视图(View)层

视图负责展示数据,通常是HTML模板文件。通过简单的变量替换实现数据渲染。

class View {
    public function render($template, $data = []) {
        extract($data);
        include "views/$template.php";
    }
}

// 使用示例
$view = new View();
$view->render('user_list', ['users' => $users]);

控制器(Controller)层

控制器处理用户请求,协调模型和视图。创建基础控制器类,其他控制器继承它。

class Controller {
    protected $model;
    protected $view;

    public function __construct() {
        $this->view = new View();
    }
}

class UserController extends Controller {
    public function __construct() {
        parent::__construct();
        $this->model = new UserModel();
    }

    public function index() {
        $users = $this->model->getUsers();
        $this->view->render('user_list', ['users' => $users]);
    }
}

路由处理

创建路由机制将URL映射到对应的控制器和方法。

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

        $controllerName = !empty($segments[0]) ? ucfirst($segments[0]) . 'Controller' : 'HomeController';
        $action = !empty($segments[1]) ? $segments[1] : 'index';

        if (class_exists($controllerName)) {
            $controller = new $controllerName();
            if (method_exists($controller, $action)) {
                $controller->$action();
            } else {
                http_response_code(404);
                echo "Action not found";
            }
        } else {
            http_response_code(404);
            echo "Controller not found";
        }
    }
}

$router = new Router();
$router->route();

目录结构

典型的MVC目录结构如下:

app/
    controllers/
        UserController.php
    models/
        UserModel.php
    views/
        user_list.php
public/
    index.php

入口文件

public/index.php 是应用的单一入口点:

require_once '../app/bootstrap.php';
$router = new Router();
$router->route();

自动加载

使用Composer的自动加载功能或实现简单的自动加载:

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

php mvc实现

标签: phpmvc
分享给朋友:

相关文章

vue实现mvc

vue实现mvc

Vue 实现 MVC 模式 Vue 本身是一个 MVVM(Model-View-ViewModel)框架,但可以通过结构调整实现 MVC(Model-View-Controller)模式。以下是具体实…

php实现搜索功能

php实现搜索功能

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

php如何实现直播

php如何实现直播

实现直播功能的方法 PHP可以通过结合其他技术和工具来实现直播功能。以下是几种常见的方法: 使用流媒体服务器 配置流媒体服务器如Nginx-RTMP、Red5或Wowza。这些服务器支持RTM…

php 实现接口

php 实现接口

PHP 实现接口的方法 在 PHP 中,接口(Interface)用于定义一组方法的规范,而不包含具体的实现。类可以实现(implement)接口,并必须实现接口中定义的所有方法。 定义接口 接口…

php队列的实现

php队列的实现

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

php实现上传图片

php实现上传图片

上传图片的基本流程 PHP 实现图片上传功能需要处理文件接收、验证、保存等步骤。以下是具体实现方法。 创建 HTML 表单 在 HTML 中创建一个表单,设置 enctype="multipart/…