0

Web サイトの MySQL を PDO に変更したところですが、他のクラスで PDO を使用しようとしたときに奇妙な問題が発生しました。

class Database {
private $pdo;

public function __construct() {
    $this->pdo = new PDO('mysql:host=localhost;dbname=appdora;charset=utf8', 'root', 'root');
}
}

class doClass {

//Variables
private $db;

//PDO
public function __construct(Database $db) {
    $this->db = $db;
}

そして、コードは次のエラーで返されます:

Catchable fatal error: Argument 1 passed to doClass::__construct() must be an instance of Database, none given, called in .../index.php on line xx and defined in ../classes.php on line xx

コード:

$do = new doClass();
if ($do->loginCheck()) { echo 'loginOk'; } else { 'loginError'; }

loginCheck() はクラスなしで動作するシンプルな関数です!

助けてくれませんか、何が問題なのですか? 前もって感謝します!

4

1 に答える 1

4
$do = new doClass();

doClassコンストラクターでパラメーターを期待するようにクラスを定義しました。

public function __construct(Database $db)

Databaseしたがって、オブジェクトを正常に構築するには、その型のパラメーターを指定する必要があります。

たとえば、 variable 内のどこかに前に格納されたデータベース オブジェクトがある場合$database、次のように単純にコンストラクターに渡すことができますdoClass

$do = new doClass($database);
于 2013-02-03T00:30:42.860 に答える