symfony2に奇妙な問題があります。symfonyサービス宣言ネームスペース
site.paginate_service:
class: "Smestaj\SiteBundle\Services\PaginationService"
arguments:
- "@service_container"
サービスは、次のようになります:私はdependacy注入
site.ads_service:
class: "Smestaj\SiteBundle\Services\AdsService"
arguments:
- "@doctrine.orm.entity_manager"
- "@service_container"
calls:
- [setPaginate, ["@site.paginate_service"]]
として別のサービスにservice.ymlでこのサービスを呼び出すとき
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で は、Iページネーションサービスを宣言しました
このエラーメッセージが表示されます。
名前空間 "Smestaj \ SiteBundle"から "ServicesaginationService"クラスをロードしようとしました。 別の名前空間に「使用」ステートメントを忘れましたか?
このメッセージから、symfonyが "ServicesaginationService"クラスを呼び出すことは明らかです。私のクラスはSmestaj \ SiteBundle \ Services \ PaginationServiceを持っています。 Symfonyは、サービスとPaginationServiceの名前をマージし、名前から「P」を削除します。
クラス名をAaaServiceに変更すると、すべて正常に動作します。
'class'値から引用符を削除してみてください。 –
サービス自体にservice_containerを注入するのは悪い考えです。依存するサービス、パラメータなどのみを注入する必要がありますが、サービスコンテナは入れないでください – rokas