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"
}