Php 为什么实现接口的类不是该接口的实例?
我想这样做依赖注入Php 为什么实现接口的类不是该接口的实例?,php,dependency-injection,Php,Dependency Injection,我想这样做依赖注入 <?php class UserModel { public function __construct(DatabaseInterface $db) { $this->db = $db; } } 我不知道为什么,因为PdoConnection实现了DatabaseInterface,所以我认为UserModel应该接受它 下面的调试 $class = new \Man
<?php
class UserModel
{
public function __construct(DatabaseInterface $db)
{
$this->db = $db;
}
}
我不知道为什么,因为PdoConnection实现了DatabaseInterface,所以我认为UserModel应该接受它
下面的调试
$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));
结果
variable class is not a instance of DatabaseInterface
array(1) {
'Manager\Database\DatabaseInterface' =>
string(34) "Manager\Database\DatabaseInterface"
}
您需要到处编写
Manager\Database\DatabaseInterface
,而不是简单地编写DatabaseInterface
我想你需要到处写Manager\Database\DatabaseInterface
,而不是简单地写DatabaseInterface
@Adder,谢谢!我忘了导入带有“use”的接口。请随意发布答案,我会接受的
$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));
variable class is not a instance of DatabaseInterface
array(1) {
'Manager\Database\DatabaseInterface' =>
string(34) "Manager\Database\DatabaseInterface"
}