Codeigniter 4 通过传递 dbgroup 获取配置数组
Codeigniter 4 get configuration array by passing a dbgroup
包括官方网站在内的许多网站都说在 dbgroup
上连接数据库连接,但是我几乎找不到一个网站谈论只获取一组配置。
这个想法是我们可以像OAuth\Pdo
一样创建多个数据适配器对象,而无需未使用的真实数据库连接来获取配置。
我怎样才能做到这一点?
通过查看系统找到答案class CodeIgniter\Config\BaseConfig
。
app/Config
中的文件包括 app/Config/Database.php
是 BaseConfig
的实例,这意味着我们可以通过以下方式获取 Database
配置的 public 属性:
$database = new \Config\Database();
通过一个数据库组获取配置数组将继续分为三个步骤:
在 .env
中复制数据库连接并更新值:
database.newdbgroup.hostname = localhost
database.newdbgroup.database = newdbgroup
database.newdbgroup.username = newdbgroup-username
database.newdbgroup.password = newdbgroup-password
database.newdbgroup.DBDriver = MySQLi
database.newdbgroup.DBPrefix =
在 app/Config/Database.php
中复制数据库连接。这次我们不应该更新值:
public $newdbgroup = [
'DSN' => '',
'hostname' => 'localhost',
'username' => '',
'password' => '',
'database' => '',
'DBDriver' => 'MySQLi',
'DBPrefix' => '',
'pConnect' => false,
'DBDebug' => (ENVIRONMENT !== 'production'),
'charset' => 'utf8',
'DBCollat' => 'utf8_general_ci',
'swapPre' => '',
'encrypt' => false,
'compress' => false,
'strictOn' => false,
'failover' => [],
'port' => 3306,
];
查看预期结果:
$database = new \Config\Database();
echo '<pre>';
var_dump($database->newdbgroup);
echo '</pre>';
exit();
输出:
array(17) {
["DSN"]=>
string(0) ""
["hostname"]=>
string(9) "localhost"
["username"]=>
string(19) "newdbgroup-username"
["password"]=>
string(19) "newdbgroup-password"
["database"]=>
string(10) "newdbgroup"
["DBDriver"]=>
string(6) "MySQLi"
["DBPrefix"]=>
string(0) ""
["pConnect"]=>
bool(false)
["DBDebug"]=>
bool(false)
["charset"]=>
string(4) "utf8"
["DBCollat"]=>
string(15) "utf8_general_ci"
["swapPre"]=>
string(0) ""
["encrypt"]=>
bool(false)
["compress"]=>
bool(false)
["strictOn"]=>
bool(false)
["failover"]=>
array(0) {
}
["port"]=>
int(3306)
}
包括官方网站在内的许多网站都说在 dbgroup
上连接数据库连接,但是我几乎找不到一个网站谈论只获取一组配置。
这个想法是我们可以像OAuth\Pdo
一样创建多个数据适配器对象,而无需未使用的真实数据库连接来获取配置。
我怎样才能做到这一点?
通过查看系统找到答案class CodeIgniter\Config\BaseConfig
。
app/Config
中的文件包括 app/Config/Database.php
是 BaseConfig
的实例,这意味着我们可以通过以下方式获取 Database
配置的 public 属性:
$database = new \Config\Database();
通过一个数据库组获取配置数组将继续分为三个步骤:
在 .env
中复制数据库连接并更新值:
database.newdbgroup.hostname = localhost
database.newdbgroup.database = newdbgroup
database.newdbgroup.username = newdbgroup-username
database.newdbgroup.password = newdbgroup-password
database.newdbgroup.DBDriver = MySQLi
database.newdbgroup.DBPrefix =
在 app/Config/Database.php
中复制数据库连接。这次我们不应该更新值:
public $newdbgroup = [
'DSN' => '',
'hostname' => 'localhost',
'username' => '',
'password' => '',
'database' => '',
'DBDriver' => 'MySQLi',
'DBPrefix' => '',
'pConnect' => false,
'DBDebug' => (ENVIRONMENT !== 'production'),
'charset' => 'utf8',
'DBCollat' => 'utf8_general_ci',
'swapPre' => '',
'encrypt' => false,
'compress' => false,
'strictOn' => false,
'failover' => [],
'port' => 3306,
];
查看预期结果:
$database = new \Config\Database();
echo '<pre>';
var_dump($database->newdbgroup);
echo '</pre>';
exit();
输出:
array(17) {
["DSN"]=>
string(0) ""
["hostname"]=>
string(9) "localhost"
["username"]=>
string(19) "newdbgroup-username"
["password"]=>
string(19) "newdbgroup-password"
["database"]=>
string(10) "newdbgroup"
["DBDriver"]=>
string(6) "MySQLi"
["DBPrefix"]=>
string(0) ""
["pConnect"]=>
bool(false)
["DBDebug"]=>
bool(false)
["charset"]=>
string(4) "utf8"
["DBCollat"]=>
string(15) "utf8_general_ci"
["swapPre"]=>
string(0) ""
["encrypt"]=>
bool(false)
["compress"]=>
bool(false)
["strictOn"]=>
bool(false)
["failover"]=>
array(0) {
}
["port"]=>
int(3306)
}