php mvc架构的简单例子

admin8个月前 (03-20)it知识590

以下是一个简单的 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

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


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

<?phpnamespace 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

<?phpnamespace 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知识

相关文章

职场人如何写季度总结

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

享受工作:找到事业与生活的平衡点

工作是我们日常生活中不可或缺的一部分。我们花费大量的时间和精力在工作中,因此,如何享受工作并找到事业与生活的平衡点就显得尤为重要。在这篇文章中,我们将探讨如何享受工作,让事业和生活愉快并行。首先,了解...

湖边

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

个人学习计划

学习计划是一个帮助你提高学习效率和使用时间的有效工具。以下是一个可能的学习计划:目标设定。 在开始学习之前,明确你的学习目标和目的地,这有助于你制定实际可行的计划。分解任务。 将大...

如何学习 javascript

学习JavaScript需要以下步骤:基础语法:学习JavaScript的基础语法,包括变量、数据类型、函数、循环、条件语句等。DOM 操作:学习如何操作 DOM,例如获取和修改元素、添加和删除事件处...

如何高效学习

努力和技巧的能力。以下是一些可以帮助你高效学习的方法:制定学习计划:制定一个清晰的学习计划,包括学习内容和时间表,有助于你更好地组织自己的学习并提高学习效率。创造良好的学习环境:在学习时,尽可能避免干...

发表评论

访客

看不清,换一张

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