Я пытаюсь создать «фреймворк-бизнес». Это означает, что мой класс не должен иметь никаких ссылок на какие-либо классы фреймворка, только зависимости проекта.
Я попытался следующие коды, с typehint в service.yml без успеха ...
Вот мой пользовательский интерфейс:
namespace App\Interfaces;
interface EntityManagerInterface extends \Doctrine\ORM\EntityManagerInterface
{
}
Вот мой каркас агностического бизнеса
use App\Interfaces\EntityManagerInterface;
class MyBusiness
{
public function __construct(EntityManagerInterface $em)
{
...
}
}
Вот мой контроллер, в который я добавляю EntityManager:
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Doctrine\ORM\EntityManagerInterface;
class testController extends AbstractController
{
public function testAction(EntityManagerInterface $em)
{
$myBusiness = new MyBusiness($em);
}
}
Итак, я получаю ошибку PHP за введение неправильного класса:
Argument 1 passed to App\Business\MyBusiness::__construct() must implement interface App\Interfaces\EntityManagerInterface, instance of Doctrine\ORM\EntityManager given, called in /var/www/src/Controller/testController.php on line 7
Как правильно внедрить EntityManager в мой бизнес, независимый от фреймворка?
Спасибо