php mvc架构的简单例子

以下是一个简单的 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 显示用户列表


标签:

相关文章

如何写文章

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

故事分解结构

故事分解结构是一种用于分析、设计和编写故事的方法,它可以将故事分解为不同的层次,从而更好地理解故事的内在逻辑和结构。下面是故事分解结构的详细解释:节拍(beat):是故事的最小单位,包含动作和反应两个...

如何学习前端知识

一、基础知识学习‌HTML/CSS‌学习网页的基本结构和页面美化,包括HTML标签、语义化标签、CSS选择器、盒模型、布局方式等‌。掌握HTML5新特性和CSS3新特性,以及如何使用div+css进行...

产品经理的主要职责是什么

产品经理的主要职责可以概括为以下几个核心方面,这些职责共同确保产品从概念到市场的成功:一、‌产品规划与战略制定‌‌市场调研与需求分析‌研究行业趋势、竞争对手动态及用户行为,挖掘潜在需求。通过用户访谈、...

Vue简版 教程

一、安装与项目创建‌CDN 引入(适合快速体验)‌通过 <script> 标签直接引入 Vue3 的 ES 模块构建版本:<div id="a...

PHP 在 2025 年及未来的发展趋势

PHP 在 2025 年及未来的发展趋势聚焦于性能跃升、现代化工具链完善与新兴场景融合,呈现以下核心方向:⚙️ ‌一、语言核心深度进化‌‌性能持续突破‌‌JIT 编译器深化‌:PHP 9+ 将针对 A...