Laravel Tinker создает новый объект, который имеет конструктор в качестве интерфейса

Я пытаюсь использовать Laravel Tinker для создания нового объекта, который имеет конструктор в качестве интерфейса.
MyClass.php

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

ApiInterface.php

interface ApiInterface {
..
..
}

Я хотел проверить свои занятия в Tinker, так что я сделал следующее:

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

Ошибка, которую я получил:

Неустранимая ошибка PHP: класс ‘App \ ApiInterface’ не найден в коде eval () ‘в строке 1

Тинкер не позволяет мне делать то, что я чувствую, что тинкер не распознает интерфейс как класс

Любая идея ?

Спасибо

0

Решение

Вы не можете создать экземпляр интерфейса.

Если вы хотите проверить свой код, создайте фиктивный класс и используйте его.

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

5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]