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

实现具体业务逻辑:

php简单实现 mvc

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 访问:

php简单实现 mvc

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 自动加载类:

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
分享给朋友:

相关文章

php实现树

php实现树

PHP实现树结构的方法 在PHP中实现树结构通常可以通过递归或迭代的方式完成。以下是几种常见的实现方法: 递归实现树结构 递归是处理树结构的自然方式,尤其适用于具有未知深度的树。 class Tr…

php 实现自动收货

php 实现自动收货

PHP 实现自动收货功能 自动收货功能通常用于电商系统,在订单超过一定时间未手动确认收货时自动完成订单。以下是实现方法: 数据库设计 需要订单表包含以下关键字段: CREATE TABLE…

php如何实现直播

php如何实现直播

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

php实现搜索

php实现搜索

PHP实现搜索功能的方法 在PHP中实现搜索功能通常涉及数据库查询和用户输入的匹配。以下是几种常见的实现方式: 使用MySQL LIKE语句 通过简单的LIKE语句实现基础搜索: $searc…

php实现排序

php实现排序

PHP 数组排序方法 PHP 提供了多种内置函数用于数组排序,适用于不同的排序需求。以下是常见的排序方法: 按值升序排序 sort() 函数对数组按值升序排序,重置键名(索引数组适用): $num…

php 实现购物车

php 实现购物车

PHP 实现购物车功能 购物车功能是电子商务网站的核心部分,可以通过 PHP 和 Session 或数据库来实现。以下是两种常见的实现方式: 使用 Session 存储购物车数据 Sessi…