代码之家  ›  专栏  ›  技术社区  ›  DreadPirateShawn

CakePHP:访问database.php值

  •  13
  • DreadPirateShawn  · 技术社区  · 17 年前

    我需要从我的一个控制器的CakePHP配置文件database.php中检索值。

    class DATABASE_CONFIG
    {
        var $db1 =
            array('driver' => 'mysqli',
                  'connect' => 'mysql_connect',
                  'host' => 'localhost',
                  'login' => 'username',
                  'password' => 'password',
                  'database' => 'schema',
                  'prefix' => '');
    }
    

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

    5 回复  |  直到 17 年前
        1
  •  15
  •   RaYell    17 年前
    $fields = get_class_vars('DATABASE_CONFIG')
    
    echo $fields['db1']['login'];
    
        2
  •  8
  •   Iain Mullan    17 年前

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

        3
  •  6
  •   Timber    12 年前

    get_class_vars()

    我认为 get_class_vars() 反正只在公共课上工作。

    http://api.cakephp.org/2.4/class-ConnectionManager.html#_enumConnectionObjects

    App::uses('ConnectionManager', 'Model');
    $dataSource = ConnectionManager::enumConnectionObjects();
    

        4
  •  0
  •   j0k gauthamp    14 年前
    $ds = ConnectionManager::getDataSource('default')->config;
    echo $ds['login'];
    
        5
  •  0
  •   Mushfiqur Rahman    11 年前

    但是从CakePHP 2.1及以上版本开始,给定的解决方案将不起作用,因为与Cake 2.x版本相比有一些很大的变化。对于Cake 2.1及以上的版本,在我测试时,以下方式应该是可行的。

    App::uses('ConnectionManager', 'Model');
    $ds = ConnectionManager::getDataSource('default');
    $user = $ds->config['login'];
    

    您可以在以下链接中找到其他选项:

    How Can I Read the DB Configuration Settings From a Cake Shell?