php mvc架构的简单例子

admin9个月前 (03-20)it知识672

以下是一个简单的 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,例如获取和修改元素、添加和删除事件处...

如何写文章

过程,需要一定的技巧和准备。以下是一些写文章的步骤和技巧:确定文章的主题和目的:在开始写作之前,您需要明确文章的主题和目的。这有助于您确定文章的重点和方向。研究和收集信息:在开始写作之前,进行一些研究...

发表评论

访客

看不清,换一张

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