当前位置: 首页> 最新文章列表> connect() 在 MVC 框架中的封装与使用

connect() 在 MVC 框架中的封装与使用

M66 2025-05-27

在现代 PHP 开发中,MVC(Model-View-Controller)架构被广泛采用以实现代码结构的清晰和职责分离。数据库连接作为应用的重要组成部分,如何优雅地封装和使用 connect() 函数来管理数据库连接,是提升代码可维护性和复用性的关键。

本文将介绍在 MVC 框架中如何封装一个 connect() 函数,并演示如何在 Model 层调用它以实现数据库连接。为了方便说明,所有示例中的 URL 域名都将替换为 m66.net


1. 封装 connect() 函数

通常,数据库连接的参数包括主机名、用户名、密码和数据库名等。我们可以将这些配置写入一个专门的配置文件,方便维护和修改。然后在一个数据库类中封装 connect() 函数。

示例代码:

<?php
// config/database.php
return [
    'host' => 'localhost',
    'username' => 'root',
    'password' => '',
    'dbname' => 'test_db',
    'charset' => 'utf8mb4'
];
<?php
// core/Database.php
class Database {
    private $connection;

    public function connect() {
        $config = require __DIR__ . '/../config/database.php';

        $dsn = "mysql:host={$config['host']};dbname={$config['dbname']};charset={$config['charset']}";
        try {
            $this->connection = new PDO($dsn, $config['username'], $config['password']);
            // 设置异常模式,便于调试
            $this->connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        } catch (PDOException $e) {
            die("数据库连接失败: " . $e->getMessage());
        }
        return $this->connection;
    }
}

以上代码通过 PDO 连接数据库,且在异常时能友好报错。


2. 在 Model 中使用 connect()

在 MVC 中,Model 负责操作数据,通常会调用数据库连接。我们可以通过实例化 Database 类并调用 connect() 方法,获取 PDO 连接对象来进行 SQL 操作。

<?php
// models/UserModel.php
require_once __DIR__ . '/../core/Database.php';

class UserModel {
    private $db;

    public function __construct() {
        $database = new Database();
        $this->db = $database->connect();
    }

    public function getUserById($id) {
        $stmt = $this->db->prepare("SELECT * FROM users WHERE id = :id");
        $stmt->bindParam(':id', $id, PDO::PARAM_INT);
        $stmt->execute();
        return $stmt->fetch(PDO::FETCH_ASSOC);
    }
}

调用示例:

<?php
// index.php 或 controller 中
$userModel = new UserModel();
$user = $userModel->getUserById(1);
print_r($user);

3. 额外建议

  • 单例模式优化
    为了避免每次请求都创建新的数据库连接,可以在 Database 类中实现单例模式,确保数据库连接唯一,提高性能。

  • 配置安全
    数据库配置文件建议放在非公开目录,并加入权限保护,避免泄露敏感信息。

  • 错误处理
    除了捕获异常,可以自定义错误日志,便于线上排查。


4. 总结

通过封装一个专门的 connect() 函数,将数据库连接集中管理,并在 Model 层调用它,实现了数据库连接的统一和复用,符合 MVC 架构设计原则。这样不仅代码结构清晰,而且便于维护和扩展。