当前位置:首页 > 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
分享给朋友:

相关文章

vue实现简单的弹窗

vue实现简单的弹窗

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

php实现搜索功能

php实现搜索功能

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

php实现递归

php实现递归

递归的基本概念 递归是一种函数调用自身的技术,适用于解决可以分解为相同子问题的问题。在PHP中,递归需要明确的终止条件(基线条件),否则会导致无限循环。 递归实现阶乘 阶乘是经典的递归案例,n! =…

php长连接实现

php长连接实现

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

php 路由实现

php 路由实现

PHP 路由实现方法 在 PHP 中实现路由功能有多种方式,以下是几种常见的实现方法: 使用原生 PHP 实现 通过解析 URL 并匹配对应的控制器和动作: $request = $_SERVER…

php 购物车实现

php 购物车实现

数据库设计 购物车功能通常需要设计数据库表存储商品和用户信息。常见的表包括products(商品表)、users(用户表)和cart(购物车表)。cart表通常包含字段:id(主键)、user_id(…