CakePHP:访问database.php值

CakePHP:访问database.php值,php,cakephp,Php,Cakephp,我需要从我的一个控制器中从CakePHP的配置文件database.php中检索值 我正在维护一个前雇员的代码,所以我不确定其中有多少遵循默认结构。我希望这是相当简单的,但我似乎无法谷歌正确的信息 文件:app/config/database.php class DATABASE_CONFIG { var $db1 = array('driver' => 'mysqli', 'connect' => 'mysql_connect',

我需要从我的一个控制器中从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' => '');
}
文件:app/controllers/my_controller.php

// here is where I need to retrieve
// the database login and password values

我可以在这里使用什么语法?甚至有可能检索到这些值吗,或者它们只是CakePHP框架的核心部分可以访问吗?

好吧,我必须说,上面的答案比我一直使用的方法更快、更简单,但只是为了讨论:

$fields = get_class_vars('DATABASE_CONFIG')

echo $fields['db1']['login'];
    App::Import('ConnectionManager');
    $ds = ConnectionManager::getDataSource('default');
    $dsc = $ds->config;

    echo $dsc['host'];
    echo $dsc['login'];
    echo $dsc['password'];
    echo $dsc['database'];

我想这会保护您的代码不受“DATABASE\u CONFIG”类名称更改的影响。

我知道这是一篇老文章,但我刚刚发现有一种方法可以列出DATABASE\u CONFIG类中的所有项,而无需使用
get\u class\u vars()
函数

$ds = ConnectionManager::getDataSource('default')->config;
echo $ds['login'];
我认为
get\u class\u vars()
无论如何只能在公共类上工作


应该列出所有内容,事实上它的输出与@RaYell answer相同。

但是从CakePHP 2.1和更高版本来看,给定的解决方案将无法工作,因为Cake 2.x版有一些重大更改。对于Cake 2.1及以上版本,以下方法应在我测试时起作用

App::uses('ConnectionManager', 'Model');
$ds = ConnectionManager::getDataSource('default');
$user = $ds->config['login'];
您可以在以下链接中找到其他选项:


此解决方案运行良好,无需调整。非常感谢+1这样做有效,当我的供应商文件夹中的某些内容需要DB访问时,我不必重复设置。这将返回
false
。你还忘了后面的分号,我不能编辑你的文章,因为编辑应该是6个字符或更长。无论谁搜索一种方法来获取定义的配置(一个特定的配置或所有配置),请参阅Timothy Onggowasito的帖子,因为这是一种更简单的PHP方法,而且它实际上可以工作,这是一种可维护的Cake方法,非常好。我稍后尝试了这一方法,但我一直得到一个错误,即“App”类没有包含在内。我肯定-应该-对我来说意味着什么,但我们又回到了继承代码的阶段,并且承认不理解结构需求。当提供解决问题的代码时,最好至少对它的工作原理做一个简短的解释,这样阅读的人就不必逐行分析它来理解它们之间的差异。但是,如果您在database.php中的“$default”数组中定义了一些新的键和值,那么ebotunes的答案就可以很好地工作,如果你在database.php中创建了一个不同的数组,就像上面可怕的海盗Shawn所做的那样,你需要使用RaYell的答案,除非你想用返回true的connect()方法创建一个新的数据源。考虑到相似性(App、ConnectionManager、data source),这种方法看起来与Iain的答案相当。也就是说,有一个额外的参考点是很好的。这个解决方案最适合我,因为它可以让我获得所有当前配置。所有当前配置正是我所需要的。这应该是公认的答案。
App::uses('ConnectionManager', 'Model');
$ds = ConnectionManager::getDataSource('default');
$user = $ds->config['login'];