Я пытаюсь использовать Laravel Tinker для создания нового объекта, который имеет конструктор в качестве интерфейса.
MyClass.php
class MyClass{
public function __construct(ApiInterface $APIloader)
{
$this->APIloader = $APIloader;
}
}
ApiInterface.php
interface ApiInterface {
..
..
}
Я хотел проверить свои занятия в Tinker, так что я сделал следующее:
php artisan tinker
>> $a = new App\MyClass(new App\ApiInterface);
Ошибка, которую я получил:
Неустранимая ошибка PHP: класс ‘App \ ApiInterface’ не найден в коде eval () ‘в строке 1
Тинкер не позволяет мне делать то, что я чувствую, что тинкер не распознает интерфейс как класс
Любая идея ?
Спасибо
Вы не можете создать экземпляр интерфейса.
Если вы хотите проверить свой код, создайте фиктивный класс и используйте его.
class TestApi implements ApiInterface {}
$a = new App\MyClass(new App\TestApi);
http://php.net/manual/en/language.oop5.interfaces.php
Лучшая альтернатива, чем фиктивный класс, это просто использовать фиктивные объекты. Они выполняют одно и то же процедурно.
Других решений пока нет …