Laravel Tinker 创建具有构造函数作为接口的新对象
Laravel Tinker creating new object that have constructer as an interface
我正在尝试使用 Laravel Tinker 创建一个具有构造函数作为接口的新对象。
MyClass.php
class MyClass{
public function __construct(ApiInterface $APIloader)
{
$this->APIloader = $APIloader;
}
}
ApiInterface.php
interface ApiInterface {
..
..
}
我想在 tinker 中测试我的 classes,所以我所做的是:
php artisan tinker
>> $a = new App\MyClass(new App\ApiInterface);
我得到的错误是:
PHP Fatal error: Class 'App\ApiInterface' not found in eval()'d code on line 1
Tinker 不允许我做我觉得 Tinker 无法将界面识别为 class
有什么想法吗?
谢谢
您不能创建接口的实例。
如果您想测试您的代码,请制作一个虚拟 class 并使用它。
class TestApi implements ApiInterface {}
$a = new App\MyClass(new App\TestApi);
http://php.net/manual/en/language.oop5.interfaces.php
比虚拟 class 更好的替代方法是使用模拟对象。他们在程序上完成了同样的事情。
我正在尝试使用 Laravel Tinker 创建一个具有构造函数作为接口的新对象。 MyClass.php
class MyClass{
public function __construct(ApiInterface $APIloader)
{
$this->APIloader = $APIloader;
}
}
ApiInterface.php
interface ApiInterface {
..
..
}
我想在 tinker 中测试我的 classes,所以我所做的是:
php artisan tinker
>> $a = new App\MyClass(new App\ApiInterface);
我得到的错误是:
PHP Fatal error: Class 'App\ApiInterface' not found in eval()'d code on line 1
Tinker 不允许我做我觉得 Tinker 无法将界面识别为 class
有什么想法吗?
谢谢
您不能创建接口的实例。
如果您想测试您的代码,请制作一个虚拟 class 并使用它。
class TestApi implements ApiInterface {}
$a = new App\MyClass(new App\TestApi);
http://php.net/manual/en/language.oop5.interfaces.php
比虚拟 class 更好的替代方法是使用模拟对象。他们在程序上完成了同样的事情。