0
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']);
    }
}

上記の例では、次のエラーが発生します。

注意: 未定義の変数: database in C:\wamp\www\career\inc\controller.php 行 11

にある配列にアクセスするにはどうすればよいconfig.phpですか? $database配列が含まれています。

4

2 に答える 2

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
于 2013-02-20T09:27:18.757 に答える
1

PeeHaa の言ったことは正しい。それを行う別の方法は、構成オプションにシングルトンクラスを使用することです。

それでも自分のやり方でやりたい場合は、 $database がグローバルであると想定しているため、コンストラクターは次のようにする必要があります。

public function __construct(){
        global $database;
        $dbh = new PDO('mysql:host=' . $database['host'] . ';dbname=' . $database['dbname'] . '', $database['user'], $database['password']);
    }
于 2013-02-20T09:47:01.810 に答える