我對symfony2有個奇怪的問題。 在service.yml我宣佈分頁服務:Symfony服務聲明命名空間
site.paginate_service:
class: "Smestaj\SiteBundle\Services\PaginationService"
arguments:
- "@service_container"
服務看起來是這樣的:
namespace Smestaj\SiteBundle\Services;
use Symfony\Component\DependencyInjection\ContainerInterface;
class PaginationService{
protected $cn;
protected $numberOfData;
public function __construct(ContainerInterface $container)
{
$this->cn = $container;
$this->numberOfData = $container->getParameter("limit")['adsPerPage'];
}
問題是,當我稱之爲service.yml這種服務到另一個服務爲dependacy注射
site.ads_service:
class: "Smestaj\SiteBundle\Services\AdsService"
arguments:
- "@doctrine.orm.entity_manager"
- "@service_container"
calls:
- [setPaginate, ["@site.paginate_service"]]
然後我得到這個錯誤信息:
試圖從命名空間「Smestaj \ SiteBundle」加載類「ServicesaginationService」。 你忘記了另一個命名空間的「使用」語句嗎?
所以,從這個消息可以清楚看出,symfony試圖調用類「ServicesaginationService」。我的班級有Smestaj \ SiteBundle \ Services \ PaginationService。 Symfony以某種方式合併服務和PaginationService名稱,並從名稱中刪除「P」。
如果我將類名更改爲AaaService,那麼一切正常。
嘗試從'class'值中刪除引號。 –
將service_container注入到服務本身是一個糟糕的主意。你應該只注入依賴的服務,參數等,但不是服務容器 – rokas