Codeigniter 4 通过传递 dbgroup 获取配置数组

Codeigniter 4 get configuration array by passing a dbgroup

包括官方网站在内的许多网站都说在 dbgroup 上连接数据库连接,但是我几乎找不到一个网站谈论只获取一组配置。

这个想法是我们可以像OAuth\Pdo一样创建多个数据适配器对象,而无需未使用的真实数据库连接来获取配置。

我怎样才能做到这一点?

通过查看系统找到答案class CodeIgniter\Config\BaseConfig

app/Config 中的文件包括 app/Config/Database.phpBaseConfig 的实例,这意味着我们可以通过以下方式获取 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)
}