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
数组。
答案 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']);
}