На многих веб-сайтах, в том числе на официальном, говорится о подключении к базе данных через dbgroup, однако я едва ли нашел веб-сайт, на котором говорится о получении только массива конфигурации.
Эта идея заключается в том, что мы можем создать несколько объектов адаптера данных, таких как OAuth\Pdo, без неиспользуемого реального соединения с базой данных для получения конфигурации.
Как я могу этого добиться?





Нашел ответ, посмотрев системный класс CodeIgniter\Config\BaseConfig.
Файлы в app/Config, включая app/Config/Database.php, являются экземплярами BaseConfig, что означает, что мы можем получить общедоступные свойства конфигурации Database следующим образом:
$database = new \Config\Database();
Получение массива конфигурации путем передачи dbgroup останется в три шага:
Дублируйте подключение к базе данных в .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)
}