これはまさに依存性注入の目的です。「カスタム クラス」は「シリアライザー」サービスに依存しています。そのため、クラスをサービス コンテナー内のサービスとして定義する必要があります。
アプリ/設定/config.yml
services:
my_custom_class:
class: My\RandomBundle\CustomClass
arguments: [serializer]
My\RandomBundle\CustomClass
use JMS\SerializerBundle\Serializer\Serializer;
class CustomClass
{
private serializer;
public function __construct(Serializer $serializer)
{
$this->serializer = $serializer;
}
}
これで、コンテナーが使用されている場所ならどこでもカスタム クラスを取得でき、自動的にシリアライザーが使用できるようになります。
$myServiceWithASerializer = $this->container->get('my_custom_class');
ドキュメントでもこれについて説明しています:
http://symfony.com/doc/current/book/service_container.html#creating-configuring-services-in-the-container