首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 物件導向實戰:建立用戶群組類與 MySQL 整合

     編輯:PHP 綜合知識

在 PHP 開發中,將物件導向程式設計(OOP)與資料庫操作結合是進階應用的關鍵。本教學將示範如何建立一個 UsersGroup 類別,該類別能自動從 MySQL 資料表讀取資料,並實例化多個 User 物件組成集合,實現「一石二鳥」:同時掌握 PHP OOP 與 MySQL 整合,以及物件組合的實作技巧。

前置準備:建立資料表

首先在 MySQL 中建立 users 資料表並插入範例資料(資料庫名稱為 kirupa_oop):

/* Create Users table */
CREATE TABLE `users` (
  `user_id` INT NOT NULL AUTO_INCREMENT,
  `user_name` TEXT NOT NULL,
  PRIMARY KEY (`user_id`)
);

/* Insert sample data */
INSERT INTO `users` ( `user_id`, `user_name` ) VALUES
( '', 'kirupa' ),
( '', 'bwh2' );

這是一個簡單的雙欄位表格,你可以自行新增更多測試資料。

核心類別設計

User 類別:單一用戶資料封裝

class User {
    private $name;

    public function __construct( $attribs ) {
        $this->name = $attribs['name'];
    }

    public function setName( $val ) {
        $this->name = $val;
    }

    public function getName() {
        return $this->name;
    }
}

UsersGroup 類別:管理用戶物件集合

UsersGroup 在建構子中自動連接資料庫、查詢資料,並將每一筆記錄轉換為 User 物件存入內部陣列:

class UsersGroup {
    private $group = array();

    public function __construct() {
        // 連接資料庫(假設 Settings 類別已定義連線參數)
        $link = mysql_connect(
            Settings::$DATABASE['host'],
            Settings::$DATABASE['username'],
            Settings::$DATABASE['password']
        );
        mysql_select_db( Settings::$DATABASE['database'], $link );

        $tbl_users = Settings::$TABLES['tbl_users'];
        $sql = "SELECT user_id AS ID, user_name AS name FROM $tbl_users";
        $result = mysql_query( $sql ) or die( mysql_error() );

        while( $row = mysql_fetch_array( $result ) ) {
            $this->addUser( $row );
        }
    }

    public function addUser( $user ) {
        if( is_object( $user ) ) {
            array_push( $this->group, $user );
        } elseif( is_array( $user ) ) {
            $noob = new User( $user );
            array_push( $this->group, $noob );
        }
    }

    public function getUsers() {
        return $this->group;
    }
}

Settings 類別:集中管理設定

class Settings {
    static $DATABASE = array(
        'host'     => 'localhost',
        'username' => 'your_user',
        'password' => 'your_pass',
        'database' => 'kirupa_oop'
    );
    static $TABLES = array(
        'tbl_users' => 'users'
    );
}

使用範例

$group = new UsersGroup;

foreach( $group->getUsers() as $user ) {
    echo $user->getName() . '<br />';
}

輸出結果將顯示所有用戶名稱。此模式展示了「資料映射器」的雛形:資料庫記錄自動轉換為領域物件,分離關注點,提升可維護性。

現代化建議

  • 使用 PDO 或 MySQLi 取代已棄用的 mysql_* 函式。
  • 採用 Composer 自動載入 管理類別檔案。
  • 引入 依賴注入,將資料庫連線物件傳入建構子,而非在類別內部硬編碼連線邏輯。
  • 考慮使用成熟的 ORM(如 Eloquent、Doctrine)處理複雜關聯。

掌握這類「集合類別」設計,是邁向企業級 PHP 架構的重要基石。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved