我在symfony中创建了自定义的教义类型,扩展了Doctrine\DBAL\Types\Type
我需要在此处注入symfony的序列化器,以使用symfony的序列化器解码一些JSON,以便它可以编译特定的类。
但是,由于它是最终的,所以我无法覆盖该构造函数,并且不能注入SerializerInterface
我尝试使用二传手并注入SerializerInterface
,但不起作用。
class MyCustomDoctrineType extends Type
{
private const NAME = 'my_custom_type';
/**
* {@inheritdoc}
*/
public function getSQLDeclaration(array $fieldDeclaration, AbstractPlatform $platform)
{
return $platform->getJsonTypeDeclarationSQL($fieldDeclaration);
}
/**
* {@inheritdoc}
*/
public function convertToDatabaseValue($value, AbstractPlatform $platform)
{
if ($value === null) {
return null;
}
return $value;
}
/**
* {@inheritdoc}
*/
public function convertToPHPValue($value, AbstractPlatform $platform)
{
if ($value === null || $value === '') {
return null;
}
if (is_resource($value)) {
$value = stream_get_contents($value);
}
$this->serializer->deserialize($value, MyClass::class, 'json'); // this is what I want to accomplish
return $value;
}
public function requiresSQLCommentHint(AbstractPlatform $platform)
{
return true;
}
public function getName()
{
return self::NAME;
}
}
那里有什么方法可以进行依赖注入吗?
public function boot()
{
parent::boot();
\Doctrine\DBAL\Types\Type::getType('my_type_name')->setSerializer($this->container->get('serializer'));
}