当前位置:首页 > PHP

php简单实现 mvc

2026-01-30 08:42:33PHP

实现 MVC 的基本结构

MVC(Model-View-Controller)是一种常见的软件设计模式,用于分离业务逻辑、数据和界面。以下是 PHP 中实现 MVC 的简单步骤。

目录结构

创建以下目录结构:

app/
    controllers/
    models/
    views/
public/
    index.php

入口文件 (public/index.php)

负责初始化并路由请求:

require '../app/controllers/Controller.php';
require '../app/models/Model.php';

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

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

$instance = new $controllerClass();
$instance->$action();

基础控制器 (app/controllers/Controller.php)

提供控制器基类:

class Controller {
    protected function render($view, $data = []) {
        extract($data);
        require "../app/views/$view.php";
    }
}

示例控制器 (app/controllers/HomeController.php)

实现具体业务逻辑:

class HomeController extends Controller {
    public function index() {
        $model = new Model();
        $data = $model->getData();
        $this->render('home/index', ['data' => $data]);
    }
}

模型 (app/models/Model.php)

处理数据逻辑:

class Model {
    public function getData() {
        return ['title' => 'MVC Example', 'content' => 'Welcome to MVC'];
    }
}

视图 (app/views/home/index.php)

显示数据:

<!DOCTYPE html>
<html>
<head>
    <title><?= $data['title'] ?></title>
</head>
<body>
    <h1><?= $data['content'] ?></h1>
</body>
</html>

URL 访问方式

通过以下 URL 访问:

http://example.com/public/index.php?c=Home&a=index

路由改进

可以使用更优雅的路由方式,例如通过 .htaccess 实现:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ public/index.php?url=$1 [QSA,L]

然后修改入口文件解析 URL 参数。

自动加载

使用 spl_autoload_register 自动加载类:

php简单实现 mvc

spl_autoload_register(function ($class) {
    $paths = [
        '../app/controllers/',
        '../app/models/'
    ];

    foreach ($paths as $path) {
        $file = $path . $class . '.php';
        if (file_exists($file)) {
            require $file;
        }
    }
});

这个简单实现展示了 MVC 的核心概念,实际项目中可能需要更复杂的路由、依赖注入和错误处理机制。

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

相关文章

vue实现简单的弹窗

vue实现简单的弹窗

Vue实现简单弹窗的方法 使用v-if和v-show控制显示 通过Vue的指令v-if或v-show可以轻松控制弹窗的显示与隐藏。v-if会完全销毁和重建DOM元素,而v-show仅通过CSS的di…

php实现文件上传

php实现文件上传

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

php实现统计

php实现统计

PHP 实现统计功能 在 PHP 中实现统计功能通常涉及数据的收集、处理和展示。以下是一些常见的统计实现方法: 数据库数据统计 通过 SQL 查询可以直接从数据库中获取统计结果: $conn =…

php 实现聊天功能

php 实现聊天功能

PHP 实现聊天功能的方法 使用 WebSocket 和 Ratchet 库 WebSocket 是实现实时聊天的理想选择。Ratchet 是一个 PHP 库,用于处理 WebSocket 连接。…

php实现验证码的识别

php实现验证码的识别

验证码识别的基本方法 验证码识别通常分为手动实现和第三方工具两种方式。手动实现需要图像处理和机器学习知识,而第三方工具则更快捷。 使用Tesseract OCR识别验证码 Tesseract是一个开…

php 实现路由

php 实现路由

PHP 实现路由的方法 在 PHP 中实现路由功能可以通过多种方式完成,以下是几种常见的实现方法: 使用原生 PHP 实现简单路由 通过解析 URL 并匹配对应的处理逻辑,可以实现基本的路由功能。以…