如何从类中访问配置文件中的数组

时间:2013-02-20 09:23:58

标签: php

require_once($_SERVER["DOCUMENT_ROOT"] . 'config.php');

class stuff{

    public $dhb;

    public function __construct(){
        $dbh = new PDO('mysql:host=' . $database['host'] . ';dbname=' . $database['dbname'] . '', $database['user'], $database['password']);
    }
}

在上面的示例中,我收到此错误:

  

注意:未定义的变量:数据库中   第11行的C:\ wamp \ www \ career \ inc \ controller.php

如何访问config.php中的数组?它包含$database数组。

2 个答案:

答案 0 :(得分:3)

更好的是注入信息:

class stuff{

    public $dhb;

    public function __construct($database){
        $dbh = new PDO('mysql:host=' . $database['host'] . ';dbname=' . $database['dbname'] . '', $database['user'], $database['password']);
    }
}

require_once($_SERVER["DOCUMENT_ROOT"] . 'config.php');
$stuff = new stuff($database); // really hope this is a fake name

或者更好的是直接传递数据库实例:

class stuff{

    public $dhb;

    public function __construct($dbh){
        $this->dbh = $dbh;
    }
}

require_once($_SERVER["DOCUMENT_ROOT"] . 'config.php');
$dbh = new PDO('mysql:host=' . $database['host'] . ';dbname=' . $database['dbname'] . '', $database['user'], $database['password']);
$stuff = new stuff($dbh); // really hope this is a fake name

答案 1 :(得分:1)

PeeHaa所说的立场。另一种方法是使用singleton类作为配置选项。

如果你仍然想按照自己的方式去做,我认为$ database是全局的,所以你的构造函数应该是:

public function __construct(){
        global $database;
        $dbh = new PDO('mysql:host=' . $database['host'] . ';dbname=' . $database['dbname'] . '', $database['user'], $database['password']);
    }
相关问题