当前位置:首页 > PHP

php简单实现/mvc

2026-02-16 07:17:35PHP

php简单实现/mvc

实现PHP的MVC框架

MVC(Model-View-Controller)是一种常见的软件设计模式,用于分离应用程序的逻辑、数据和界面。以下是一个简单的PHP MVC实现示例:

目录结构

app/
    controllers/
        HomeController.php
    models/
        UserModel.php
    views/
        home/
            index.php
public/
    index.php

入口文件 (public/index.php)

<?php
require_once '../app/bootstrap.php';

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

引导文件 (app/bootstrap.php)

<?php
require_once 'core/Router.php';
require_once 'core/Controller.php';
require_once 'core/Model.php';

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

路由类 (core/Router.php)

<?php
class Router {
    protected $controller = 'HomeController';
    protected $method = 'index';
    protected $params = [];

    public function __construct() {
        $url = $this->parseUrl();

        if (file_exists('../app/controllers/' . ucfirst($url[0]) . 'Controller.php')) {
            $this->controller = ucfirst($url[0]) . 'Controller';
            unset($url[0]);
        }

        require_once '../app/controllers/' . $this->controller . '.php';
        $this->controller = new $this->controller;

        if (isset($url[1])) {
            if (method_exists($this->controller, $url[1])) {
                $this->method = $url[1];
                unset($url[1]);
            }
        }

        $this->params = $url ? array_values($url) : [];

        call_user_func_array([$this->controller, $this->method], $this->params);
    }

    public function parseUrl() {
        if (isset($_GET['url'])) {
            return explode('/', filter_var(rtrim($_GET['url'], '/'), FILTER_SANITIZE_URL));
        }
    }
}

基础控制器 (core/Controller.php)

<?php
class Controller {
    public function model($model) {
        require_once '../app/models/' . $model . '.php';
        return new $model();
    }

    public function view($view, $data = []) {
        require_once '../app/views/' . $view . '.php';
    }
}

基础模型 (core/Model.php)

<?php
class Model {
    protected $db;

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

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

<?php
class HomeController extends Controller {
    public function index() {
        $data = [
            'title' => 'Welcome to MVC'
        ];
        $this->view('home/index', $data);
    }
}

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

<!DOCTYPE html>
<html>
<head>
    <title><?php echo $title; ?></title>
</head>
<body>
    <h1><?php echo $title; ?></h1>
</body>
</html>

示例模型 (app/models/UserModel.php)

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

.htaccess文件 (public/.htaccess)

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

这个实现展示了MVC框架的基本结构,可以根据需要进行扩展。关键点是分离关注点:模型处理数据,视图处理显示,控制器协调两者。

php简单实现/mvc

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

相关文章

php实现购物车

php实现购物车

PHP实现购物车功能 购物车功能是电商网站的核心模块之一,通常涉及商品添加、删除、数量修改和结算等操作。以下是使用PHP实现购物车功能的几种方法。 使用Session存储购物车数据 Session…

php实现搜索

php实现搜索

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

php 实现登录

php 实现登录

PHP 登录功能实现 使用 PHP 实现登录功能通常需要结合数据库验证和会话管理。以下是一个基本的登录实现流程: 数据库准备 创建用户表存储用户名和密码(建议使用哈希加密): CREATE TAB…

php实现异步

php实现异步

PHP 实现异步的方法 PHP 本身是同步执行的脚本语言,但可以通过以下方法模拟异步操作或实现异步效果: 使用多进程(pcntl_fork) 通过 pcntl_fork 创建子进程实现异步,适用于…

php队列的实现

php队列的实现

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

php实现上传图片

php实现上传图片

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