PDO の使用方法を学習しようとしています。名前空間を使用する非常に小さなアプリケーションがあります。composer を使用して、クラスを自動ロードします。
PDO への PHPTheRightWay MVC アプローチに従おうとしていますが、失敗しています。私は自分の DbModel クラスをそれらのクラスと一致するようにセットアップしました。私の php コードでは、その新しいインスタンスを作成し、PDO オブジェクトを解析します。
クラス:
namespace Acme;
class DbModel {
protected $db;
public function __construct(PDO $db)
{
$this->db = $db;
}
public function getAllPlayers()
{
return $this->db->query('SELECT * FROM player');
}
}
ページ:
use Acme\DbModel;
use Acme\Player;
use Acme\Team;
use Acme\Match;
$db = new PDO('mysql:host=127.0.0.1;dbname=football', 'root', '');
$model = new DbModel($db);
ただし、次のエラーが発生します。なぜこれが起こっているのか分かりません。
キャッチ可能な致命的なエラー: Acme\DbModel::__construct() に渡される引数 1 は、Acme\PDO のインスタンスである必要があります。指定された PDO のインスタンスは、9 行目の C:\xampp\htdocs\footballMatch\matchDay.php で呼び出され、次のように定義されますC:\xampp\htdocs\footballMatch\src\DbModel.php 9 行目
このクラスを追加した後、 and を実行composer install
しcomposer dump-autoload
ます。