我有jms序列化程序,并且在我的类实体中有注释。我只有在某些情况下需要应用jms序列化程序注释的情况。这该怎么做 ?首先,我认为可能需要将注释从实体类移动到uml,并创建一些处理程序,在此我可以对此实体启用此注释,其余时间jms不适用于实体
我的实体
/**
* @Annotation\ExclusionPolicy("all")
*/
class Application implements ContainsRecordedMessages
{
/**
* @var int
*
* @Annotation\Groups({
* "get_application"
* })
* @Annotation\Expose()
*/
private $id;
/**
* @var int
*
* @Annotation\Groups({
* "post_application"
* })
* @Annotation\SerializedName("company_id")
* @Annotation\Expose()
*/
private $companyId;
/**
* @var string
*
* @Annotation\Groups({
* "post_application"
* })
* @Annotation\SerializedName("channel_sale")
* @Annotation\Expose()
*/
private $channelSale;
,并且我有这个实体的类管理器,我想在其中启用jms和禁用jms序列化程序注释
class ApplicationManager
{
public function someFunction()
{
$this->enableJmsForEntity(Application::class);
//some logic
//
$this->disableJmsForEntity(Application::class);
}
}
我的目标-jms序列化程序在序列化程序进程中不起作用以进行响应。仅在我的服务中,我使用deserializer
函数,用于实体启用的jms序列化程序注释创建实体。因为在这个旧项目中,所有响应都是这样
return $this->json($application, Response::HTTP_CREATED);
vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Controller/ControllerTrait.php:114
protected function json($data, $status = 200, $headers = array(), $context = array())
{
if ($this->container->has('serializer')) {
$json = $this->container->get('serializer')->serialize($data, 'json', array_merge(array(
'json_encode_options' => JsonResponse::DEFAULT_ENCODING_OPTIONS,
), $context));
return new JsonResponse($json, $status, $headers, true);
}
return new JsonResponse($data, $status, $headers);
}
在添加了jms注释后,我们遇到了问题,即更改..