Laravel Tinker创建具有构造函数作为接口的新对象

时间:2017-10-27 17:20:54

标签: php laravel laravel-5 tinker

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

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

ApiInterface.php

interface ApiInterface {
    ..
    ..
}

我想修补我的课程,所以我所做的是:

  1. php artisan tinker
  2. >> $a = new App\MyClass(new App\ApiInterface);
  3. 我得到的错误是:

      

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

    修补匠不允许我todo我觉得修补匠不认识界面作为一个类

    有什么想法吗?

    由于

1 个答案:

答案 0 :(得分: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