0

我正在尝试使用 Laravel Tinker 创建一个具有构造函数作为接口的新对象。MyClass.php

class MyClass{
 public function __construct(ApiInterface $APIloader)
    {
        $this->APIloader = $APIloader;
    }
}

接口接口.php

interface ApiInterface {
    ..
    ..
}

我想在修补程序中测试我的课程,所以我所做的是:

  1. php artisan tinker
  2. >> $a = new App\MyClass(new App\ApiInterface);

我得到的错误是:

PHP 致命错误:在第 1 行的 eval() 代码中找不到类“App\ApiInterface”

修补匠不允许我做我觉得修补匠无法将接口识别为类的事情

任何想法 ?

谢谢

4

1 回答 1

5

您不能创建接口的实例。

如果您想测试您的代码,请创建一个虚拟类并使用它。

class TestApi implements ApiInterface {}

$a = new App\MyClass(new App\TestApi);

http://php.net/manual/en/language.oop5.interfaces.php

比虚拟类更好的选择就是使用模拟对象。他们在程序上完成同样的事情。

https://laravel.com/docs/5.5/mocking

https://phpunit.de/manual/current/en/test-doubles.html

于 2017-10-27T17:23:32.687 回答