承接上文 ThinkPHP 3.2 核心變革,本文聚焦 3.2.3 版本數據庫層的重大更新。此版本底層驅動全面採用 PDO 重寫,配置體系更靈活強大,並引入獨立調試模式與多種連接定義方式,極大提升了開發體驗。
/* 數據庫設置 */
'DB_TYPE' => '', // 數據庫類型:mysql/sqlite/oracle/pgsql/sqlsrv/firebird
'DB_HOST' => '', // 服務器地址(建議用 IP)
'DB_NAME' => '', // 數據庫名
'DB_USER' => '', // 用戶名
'DB_PWD' => '', // 密碼
'DB_PORT' => '', // 端口(留空取默認)
'DB_PREFIX' => '', // 表前綴
'DB_PARAMS' => array(), // PDO 連接參數(傳入 PDO 構造函數第 4 參數)
'DB_DEBUG' => TRUE, // 獨立調試模式,開啟後記錄 SQL 日誌
'DB_LITE' => false, // Lite 模式:僅支持原生 SQL 查詢
'DB_FIELDS_CACHE' => true, // 啟用字段緩存
'DB_CHARSET' => 'utf8', // 編碼
'DB_DEPLOY_TYPE' => 0, // 0 集中式/1 分布式(主從)
'DB_RW_SEPARATE' => false, // 讀寫分離(主從有效)
'DB_MASTER_NUM' => 1, // 主服務器數量
'DB_SLAVE_NO' => '', // 指定從服務器序號
移除參數(3.2.2 → 3.2.3):
DB_FIELDTYPE_CHECK(強制字段類型檢測)DB_SQL_BUILD_CACHE、DB_SQL_BUILD_QUEUE、DB_SQL_BUILD_LENGTH(SQL 構建緩存機制)DB_SQL_LOG(由 DB_DEBUG 替代)DB_BIND_PARAM(PDO 自動參數綁定,無需配置)新增參數: DB_DEBUG、DB_LITE。
關鍵點:3.2.3 將數據庫調試模式(DB_DEBUG)與項目調試模式(APP_DEBUG)解耦,可獨立控制 SQL 日誌記錄。
'DB_TYPE' => 'mysql',
'DB_HOST' => '192.168.1.10',
'DB_NAME' => 'thinkphp',
'DB_USER' => 'root',
'DB_PWD' => '1234',
'DB_PORT' => '3306',
'DB_PREFIX' => 'think_',
'DB_CHARSET' => 'utf8',
'DB_DEBUG' => TRUE
namespace Home\Model;
use Think\Model;
class UserModel extends Model {
protected $connection = array(
'db_type' => 'mysql',
'db_user' => 'root',
'db_pwd' => '1234',
'db_host' => '192.168.1.10',
'db_port' => '3306',
'db_name' => 'thinkphp',
'db_charset' => 'utf8',
);
}
注意:模型中參數名為全局配置的小寫形式。
protected $connection = 'mysql://root:1234@192.168.1.10:3306/thinkphp#utf8';
格式:類型://用戶:密碼@地址:端口/數據庫#字符集。
'DB_CONFIG1' => array( ... ), // 數組
'DB_CONFIG2' => 'mysql://root:1234@192.168.1.10:3306/thinkphp#utf8'; // 字符串
// 模型中調用
protected $connection = 'DB_CONFIG1'; // 或 'DB_CONFIG2'
$User = M('User', 'other_', 'mysql://root:1234@192.168.1.10/demo#utf8');
// 或使用預定義配置
$User = M('User', 'other_', 'DB_CONFIG2');
第三參數支持數組、DSN 字符串或配置名,極大便利了多數據庫切換場景。
DB_DSN:通常無需手動設置,驅動會根據類型自動構建;如需自定義請遵循 PDO DSN 規範。DB_PARAMS:直接傞入 PDO 構造函數的第四個參數(驅動選項陣列)。總結:ThinkPHP 3.2.3 通過 PDO 重寫統一了底層交互,配置體系更符合現代 PHP 開發習慣,多種連接定義方式覆蓋從全局到臨時的各類場景,配合獨立調試開關,讓數據庫操作更可控、更高效。