当前位置:首页 > PHP

php mvc的实现

2026-03-13 08:05:59PHP

PHP MVC 实现方法

MVC(Model-View-Controller) 是一种设计模式,用于分离应用程序的业务逻辑、用户界面和用户输入。以下是 PHP 中实现 MVC 的基本方法。

目录结构

创建以下目录结构来组织代码:

  • app/
    • controllers/ 存放控制器
    • models/ 存放模型
    • views/ 存放视图
  • public/ 存放入口文件和静态资源
  • config/ 存放配置文件

模型(Model)

模型负责处理数据和业务逻辑。创建一个基础模型类,其他模型可以继承它。

// app/models/Model.php
class Model {
    protected $db;

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

// app/models/User.php
class User extends Model {
    public function getUsers() {
        $stmt = $this->db->query("SELECT * FROM users");
        return $stmt->fetchAll(PDO::FETCH_ASSOC);
    }
}

视图(View)

视图负责显示数据。通常使用简单的 PHP 文件或模板引擎。

// app/views/users/index.php
<!DOCTYPE html>
<html>
<head>
    <title>Users</title>
</head>
<body>
    <h1>Users</h1>
    <ul>
        <?php foreach ($users as $user): ?>
            <li><?php echo $user['name']; ?></li>
        <?php endforeach; ?>
    </ul>
</body>
</html>

控制器(Controller)

控制器处理用户请求,调用模型获取数据,并传递给视图。

// app/controllers/UserController.php
class UserController {
    public function index() {
        $userModel = new User();
        $users = $userModel->getUsers();
        require 'app/views/users/index.php';
    }
}

路由

路由将 URL 映射到相应的控制器和方法。

// public/index.php
require '../app/controllers/UserController.php';

$action = $_GET['action'] ?? 'index';
$controller = $_GET['controller'] ?? 'user';

$controllerClass = ucfirst($controller) . 'Controller';
if (class_exists($controllerClass)) {
    $controllerInstance = new $controllerClass();
    if (method_exists($controllerInstance, $action)) {
        $controllerInstance->$action();
    } else {
        echo "Action not found";
    }
} else {
    echo "Controller not found";
}

自动加载

使用自动加载来避免手动包含文件。

php mvc的实现

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

$action = $_GET['action'] ?? 'index';
$controller = $_GET['controller'] ?? 'user';

$controllerClass = 'controllers\\' . ucfirst($controller) . 'Controller';
if (class_exists($controllerClass)) {
    $controllerInstance = new $controllerClass();
    if (method_exists($controllerInstance, $action)) {
        $controllerInstance->$action();
    } else {
        echo "Action not found";
    }
} else {
    echo "Controller not found";
}

使用框架

对于更复杂的应用,可以考虑使用现有的 PHP MVC 框架,如 Laravel、Symfony 或 CodeIgniter。这些框架提供了更多的功能和更好的结构。

标签: phpmvc
分享给朋友:

相关文章

php实现栈

php实现栈

栈的基本概念 栈(Stack)是一种遵循后进先出(LIFO)原则的数据结构。核心操作包括: push:元素入栈。 pop:元素出栈(返回并移除栈顶元素)。 peek:查看栈顶元素(不移除…

php实现接口

php实现接口

PHP 实现接口的方法 在 PHP 中,接口(Interface)用于定义一组方法的规范,而不实现具体功能。类可以实现一个或多个接口,并必须实现接口中定义的所有方法。 定义接口 接口使用 inter…

php搜索功能实现

php搜索功能实现

实现基本的PHP搜索功能 使用MySQL数据库和PHP实现简单的关键词搜索功能。需要确保数据库中有可供搜索的表和数据。 // 连接数据库 $conn = new mysqli('localhost'…

php 线程实现

php 线程实现

PHP 线程实现方法 PHP 本身是单线程语言,但可以通过扩展或库实现多线程功能。以下是几种常见的实现方式: 使用 pthreads 扩展 pthreads 是一个 PHP 扩展,允许在 PHP 中…

php 实现链表

php 实现链表

PHP 实现链表的方法 链表是一种线性数据结构,由节点组成,每个节点包含数据和指向下一个节点的指针。PHP 中可以通过类和对象来实现链表。 定义链表节点类 创建一个 ListNode 类,用于表示链…

php 实现路由

php 实现路由

PHP 实现路由的方法 在 PHP 中实现路由功能可以通过多种方式完成,以下是几种常见的实现方法: 使用原生 PHP 实现简单路由 通过解析 URL 并匹配对应的处理逻辑,可以实现基本的路由功能。以…