当前位置:首页 > PHP

php简单实现 mvc

2026-03-13 05:31:58PHP

实现MVC架构的基本步骤

PHP实现MVC(Model-View-Controller)架构可以通过以下方式完成。MVC将应用程序分为三个主要部分:模型(数据处理)、视图(用户界面)和控制器(业务逻辑)。

php简单实现 mvc

目录结构

创建以下基本目录结构:

php简单实现 mvc

app/
  controllers/
  models/
  views/
index.php

入口文件(index.php)

<?php
// 自动加载类
spl_autoload_register(function ($class) {
    require_once str_replace('\\', '/', $class) . '.php';
});

// 获取请求路径
$request = $_SERVER['REQUEST_URI'];
$request = str_replace('/mvc/', '', $request);

// 简单路由
switch ($request) {
    case '':
    case 'home':
        $controller = new \controllers\HomeController();
        $controller->index();
        break;
    default:
        http_response_code(404);
        echo '404 Not Found';
        break;
}
?>

控制器示例(HomeController.php)

<?php
namespace controllers;

use models\HomeModel;

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

        require_once '../views/home.php';
    }
}
?>

模型示例(HomeModel.php)

<?php
namespace models;

class HomeModel {
    public function getData() {
        return [
            'title' => 'MVC示例',
            'content' => '这是一个简单的MVC实现'
        ];
    }
}
?>

视图示例(home.php)

<!DOCTYPE html>
<html>
<head>
    <title><?php echo $data['title']; ?></title>
</head>
<body>
    <h1><?php echo $data['title']; ?></h1>
    <p><?php echo $data['content']; ?></p>
</body>
</html>

扩展路由系统

对于更复杂的应用,可以实现一个简单的路由类:

class Router {
    private $routes = [];

    public function addRoute($path, $handler) {
        $this->routes[$path] = $handler;
    }

    public function dispatch($request) {
        if (isset($this->routes[$request])) {
            $handler = $this->routes[$request];
            call_user_func($handler);
        } else {
            http_response_code(404);
            echo '404 Not Found';
        }
    }
}

数据库连接

在模型中添加数据库连接:

class Database {
    private $connection;

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

    public function query($sql, $params = []) {
        $stmt = $this->connection->prepare($sql);
        $stmt->execute($params);
        return $stmt;
    }
}

注意事项

  • 确保所有PHP文件使用正确的命名空间
  • 视图文件只应包含展示逻辑,避免复杂业务逻辑
  • 控制器应保持精简,主要负责协调模型和视图
  • 考虑使用Composer进行依赖管理
  • 对于生产环境,需要添加更多错误处理和安全性措施

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

相关文章

php 实现单链表

php 实现单链表

单链表的基本概念 单链表是一种线性数据结构,由节点组成,每个节点包含数据域和指向下一个节点的指针域。链表的头节点是访问整个链表的入口。 单链表的节点类实现 在PHP中,可以通过类来定义链表节…

php实现https

php实现https

PHP 实现 HTTPS 请求 在 PHP 中实现 HTTPS 请求,可以通过多种方式完成,包括使用内置函数、cURL 扩展或第三方库。以下是几种常见的方法: 使用 file_get_content…

php数据库实现

php数据库实现

PHP 连接 MySQL 数据库 使用 mysqli 扩展连接 MySQL 数据库: <?php $servername = "localhost"; $username = "usernam…

php session 实现购物车

php session 实现购物车

PHP Session 实现购物车的方法 初始化 Session 在 PHP 脚本的最开始调用 session_start() 函数,确保会话已启用。这通常在页面的顶部完成。 session_sta…

php 自动登录实现

php 自动登录实现

自动登录的实现方法 PHP中实现自动登录通常涉及使用Cookie存储用户凭证,并在用户再次访问时自动验证。以下是几种常见的方法: 使用Cookie存储用户凭证 用户登录成功后,生成一个唯一的Tok…

vue简单功能实现

vue简单功能实现

Vue 简单功能实现示例 以下是一个基于 Vue 3 的简单计数器功能实现,包含模板、脚本和样式部分: <template> <div class="counter">…