我嘗試在我的RepositoryClass中注入Container,但它不起作用。在我的存儲庫類中注入容器
BaseRepository:
<?php
namespace MyApp\ApplicationBundle\Repository;
use Symfony\Component\DependencyInjection\ContainerAwareInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
class BaseRepository implements ContainerAwareInterface
{
protected $container;
public function setContainer(ContainerInterface $container=null)
{
echo "container";
var_dump($container);
}
public function __construct()
{
echo __CLASS__;
}
}
services.yml
services:
myapp.base_repository:
class: MyApp\ApplicationBundle\Repository\BaseRepository
calls:
- [ setContainer, [ '@service_container' ] ]
DefaultController:
$baseRep = new BaseRepository();
輸出的唯一,我得到的是回聲FILE從BaseRepository建設。 ,我試圖第二種方法,是注入GuzzleClient自我(這就是爲什麼我試圖注入容器,是因爲我需要我的狂飲,configuraton設置。
services.yml
myapp.base_repository:
class: MyApp\ApplicationBundle\Repository\BaseRepository
arguments: ['@csa_guzzle.client.mce']
BaseRepository:
use GuzzleHttp\Client;
class BaseRepository
{
public function __construct(Client $client)
{
var_dump($client);
echo __CLASS__;
}
}
但後來我得到了以下錯誤:
Type error: Argument 1 passed to MyApp\ApplicationBundle\Repository\BaseRepository::__construct() must be an instance of GuzzleHttp\Client, none given, called in MyApp/src/Chameleon/DefaultBundle/Controller/DefaultController.php on line 20
任何人都知道我能做什麼?
謝謝!
新運算符對依賴注入容器一無所知。您需要直接從容器中提取服務。從一個控制器將是$ repo = $ this-> get('myapp.base_repository'); – Cerad
看過你在做什麼之後,似乎創建一個服務來執行你想要的操作會更有意義,並且如果需要調用存儲庫函數,則將實體管理器注入到該服務器中。 –