php mvc架构的简单例子

admin2个月前 (03-20)it知识271

以下是一个简单的 PHP MVC 架构示例,包含基本的模型(Model)、视图(View)和控制器(Controller)结构:

目录结构

project/

├── app/

│   ├── controllers/

│   │   ├── HomeController.php

│   │   └── UserController.php

│   ├── models/

│   │   └── User.php

│   └── views/

│       ├── home/

│       │   └── index.php

│       └── user/

│           └── list.php

├── public/

│   └── index.php

└── .htaccess


1.入口文件 public/index.php

<?php
// 自动加载类
spl_autoload_register(function ($class) {
    $file = __DIR__ . '/../app/' . str_replace('\\', '/', $class) . '.php';
    if (file_exists($file)) {
        require $file;
    }
});
// 获取请求路径
$request = $_SERVER['REQUEST_URI'];
$path = parse_url($request, PHP_URL_PATH);
// 简单路由
switch ($path) {
    case '/':
        $controller = new \controllers\HomeController();
        $controller->index();
        break;
    case '/user/list':
        $controller = new \controllers\UserController();
        $controller->list();
        break;
    default:
        http_response_code(404);
        echo 'Page not found';
        break;
}


2. 控制器 app/controllers/HomeController.php

<?php
namespace controllers;
class HomeController {
    public function index() {
        // 加载视图
        require __DIR__ . '/../views/home/index.php';
    }
}


3. 控制器 app/controllers/UserController.php

<?php
namespace controllers;
use models\User;
class UserController {
    public function list() {
        // 获取数据
        $userModel = new User();
        $users = $userModel->getAllUsers();
        
        // 传递数据到视图
        require __DIR__ . '/../views/user/list.php';
    }
}


4. 模型 app/models/User.php

<?php
namespace models;
class User {
    // 模拟数据库数据
    public function getAllUsers() {
        return [
            ['id' => 1, 'name' => 'Alice'],
            ['id' => 2, 'name' => 'Bob'],
            ['id' => 3, 'name' => 'Charlie']
        ];
    }
}


5. 视图 app/views/home/index.php

<!DOCTYPE html>
<html>
<head>
    <title>Home</title>
</head>
<body>
    <h1>Welcome to Home Page</h1>
    <a href="/user/list">View Users</a>
</body>
</html>


6. 视图 app/views/user/list.php

<!DOCTYPE html>
<html>
<head>
    <title>User List</title>
</head>
<body>
    <h1>User List</h1>
    <ul>
        <?php foreach ($users as $user): ?>
            <li><?= htmlspecialchars($user['name']) ?></li>
        <?php endforeach; ?>
    </ul>
    <a href="/">Back to Home</a>
</body>
</html>


7. .htaccess 文件(用于URL重写)

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ /public/index.php [L]
</IfModule>



运行说明

  1. 将项目放在 Web 服务器的根目录(如 Apache 的 htdocs

  2. 访问 http://localhost/ 显示首页

  3. 访问 http://localhost/user/list 显示用户列表


标签: 分享IT知识

相关文章

职场人如何写季度总结

作为职场人,写季度总结是一个展示自己工作成果和总结经验教训的机会。以下是一些撰写季度总结的建议:明确总结的目的:季度总结的目的是为了向上级领导汇报本季度的工作进展、成果和教训,以及下季度的工作计划。因...

优美程序是怎样的

程序优美是一个主观的概念,每个人可能会有不同的看法。然而,以下是一些可能导致程序优美的因素:简洁性:优美的程序应该尽可能地简洁明了。这意味着应该使用尽可能少的数据结构和算法,以及尽可能简单的代码。可读...

关于夏天

在一个炎热的午后,阳光穿过树叶的缝隙,洒在公园的草地上。空气中弥漫着夏日的气息,那是炎热中夹杂着淡淡的花香,还有草地的清新味道。在这个充满活力的季节,夏天以其独特的方式展示着它的魅力。夏天是一个充满色...

湖边

湖边,一片静谧的美好。清晨的阳光洒在湖面上,波光粼粼,让人心旷神怡。湖上的荷叶轻轻摇曳,荷花争奇斗艳,仿佛在向人们展示着它们的美丽。湖边的柳树依依,芦苇丛生,形成了一道道天然的屏障,让人感到一种隐秘的...

拖延症重度患者怎样自救

对于拖延症的重度患者,自救的关键在于以下几点:识别并克服拖延的借口。拖延常常因为我们害怕、不确定、不想不舒服而找到各种借口。我们必须识破这些借口,并对自己说:“如果我拖延,后果将不堪设想。”制定清晰的...

炎热的夏天

夏天是一个充满活力和热情的季节,炎热的的气息让人感到无力和疲惫。但是,这个季节也有着许多美好的回忆和乐趣,让我们一起来看看夏天的美好与炎热吧。首先,夏天的天气非常炎热,太阳高照,蓝天白云,气温高达30...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。