我想这样进行依赖注入
(typeof parameter=== 'function')
所以我已经创建了Database类和一个接口
<?php
class UserModel
{
public function __construct(DatabaseInterface $db)
{
$this->db = $db;
}
}
但是当我尝试使UserModel实例传递PdoConnection实例时,出现错误
<?php
interface DatabaseInterface {}
class PdoConnection implements DatabaseInterface
{
...
我不确定为什么PdoConnection实现了DatabaseInterface,所以我相信UserModel应该接受它?
在下面调试
$user = new UserModel(new \Manager\Database\PdoConnection);
__construct() must be an instance of DatabaseInterface, instance of Manager\Database\PdoConnection given
结果
$class = new \Manager\Database\PdoConnection();
if ($class instanceof DatabaseInterface) {
echo "variable class is a instance of DatabaseInterface";
} else {
echo "variable class is not a instance of DatabaseInterface";
}
var_dump(class_implements($class));
答案 0 :(得分:1)
您需要在各处编写Manager\Database\DatabaseInterface
而不是简单地写DatabaseInterface
。