我正在尝试学习如何使用PDO。我有一个使用命名空间的非常小的应用程序。我使用作曲家自动加载类。
我正在尝试遵循PHPTheRightWay MVC方法进行PDO,但我失败了。我已经设置了我的 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 AcmeDbModel;
use AcmePlayer;
use AcmeTeam;
use AcmeMatch;
$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并在第 9 行的 C:\xampp\htdocs\footballMatch\src\DbModel.php 中定义
添加此类后,我运行composer install
并composer dump-autoload
.
根命名空间前缀添加到 PDO 中,例如:
public function __construct(PDO $db)
目前,您的脚本假定名为 PDO 的类应位于 Acme 命名空间下,但事实并非如此。