所以我有一个这样的响应类(简化代码段):
/**
* @Serializer\ExclusionPolicy("all")
*/
class MyResponse
{
/**
* @Serializer\Expose
* @Serializer\Groups({"myGroup"})
* @Serializer\Accessor("getMyName")
*/
public $name;
public function getMyName()
{
return 'Donald';
}
}
排除政策排除了所有字段的序列化,除非它们与@Serializer\Expose
明确公开且数据组匹配。
这适用于除@Serializer\Accessor
注释之外的所有字段。无论组策略如何,始终包含这些字段。我无法在文档或任何其他报告中找到任何内容,以建议@Serializer\Accessor
注释覆盖组策略,也无法手动检查访问者函数中的数据组。
有没有办法实现这一点,还是我必须在响应构造函数中内联所有的访问器函数?我试图避免使用巨大的100L +构造函数,但是如果我不能排除某些字段,它就会失去使用访问器注释的点......
答案 0 :(得分:0)
我从未使用过Accessor
注释,因此我不知道它无法正常工作的原因,但我可以建议您将注释直接放在将它们标记为虚拟属性的函数上:
/**
* @Serializer\ExclusionPolicy("all")
*/
class MyResponse
{
public $name;
/**
* @Serializer\VirtualProperty()
* @Serializer\SerializedName("name")
* @Serializer\Groups({"myGroup"})
*/
public function getMyName()
{
return 'Donald';
}
}