當前位置: 首頁> 最新文章列表> 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. 額外建議

  • 單例模式優化<br> 為了避免每次請求都創建新的數據庫連接,可以在Database類中實現單例模式,確保數據庫連接唯一,提高性能

  • 配置安全<br> 數據庫配置文件建議放在非公開目錄,並加入權限保護,避免洩露敏感信息

  • 錯誤處理<br> 除了捕獲異常,可以自定義錯誤日誌,便於線上排查


4. 總結

通過封裝一個專門的connect()函數,將數據庫連接集中管理,並在Model 層調用它,實現了數據庫連接的統一和復用,符合MVC 架構設計原則。這樣不僅代碼結構清晰,而且便於維護和擴展。