我需要从我的一个控制器中检索CakePHP的配置文件database.php中的值.
我维护一个前雇员的代码,所以我不肯定这有多少是坚持默认结构.我希望这是相当简单的,但我似乎无法谷歌正确的信息.
文件:app/config/database.php
class DATABASE_CONFIG
{
var $db1 =
array('driver' => 'mysqli',
'connect' => 'mysql_connect',
'host' => 'localhost',
'login' => 'username',
'password' => 'password',
'database' => 'schema',
'prefix' => '');
}
Run Code Online (Sandbox Code Playgroud)
文件:app/controllers/my_controller.php
// here is where I need to retrieve
// the database login and password values
Run Code Online (Sandbox Code Playgroud)
我可以在这里使用什么语法?甚至可以检索这些值,还是只能访问CakePHP框架的内容?
RaY*_*ell 15
$fields = get_class_vars('DATABASE_CONFIG')
echo $fields['db1']['login'];
Run Code Online (Sandbox Code Playgroud)
好吧,我不得不说上面的答案是比我一直使用的方法更快更简单的方法,但仅仅是为了论证:
App::Import('ConnectionManager');
$ds = ConnectionManager::getDataSource('default');
$dsc = $ds->config;
echo $dsc['host'];
echo $dsc['login'];
echo $dsc['password'];
echo $dsc['database'];
Run Code Online (Sandbox Code Playgroud)
我想如果有什么可以保护你的代码免受'DATABASE_CONFIG'类名称的更改.
我知道这是一篇旧帖子,但我发现有一种方法可以在不使用get_class_vars()函数的情况下列出DATABASE_CONFIG类中的所有项目.
我认为get_class_vars()无论如何只适用于公共课程.
http://api.cakephp.org/2.4/class-ConnectionManager.html#_enumConnectionObjects
App::uses('ConnectionManager', 'Model');
$dataSource = ConnectionManager::enumConnectionObjects();
Run Code Online (Sandbox Code Playgroud)
应列出所有内容,实际上它的输出与@RaYell答案相同.