Symfony 序列化器虚拟属性,如 JMS Expression Prop

R.D*_*oro 5 php serialization symfony jmsserializerbundle jms-serializer

我目前正在参与一个在 API 中使用 JMS Serializer 的项目。我们使用了很多虚拟属性——尤其是序列化映射中的表达式 Prop。

App\Entity\MyEntity:
exclusion_policy: none
properties:
    id:
        expose: true
        groups: ['default']
virtual_properties:
    child:
        exp: object.getChildObject().getIdentifier()
        serialized_name: child_identifier
        type: string
        groups: ['default']
    amount:
        exp: object.getOtherChild().getAmount()
        serialized_name: other_child_amount
        type: string
        groups: ['default']
Run Code Online (Sandbox Code Playgroud)

这将允许我拥有子属性,而不必为更简洁的 JSON 创建 getter - 对于这些虚拟属性中有一些逻辑的情况非常有用(例如:以下示例中的“金额”)

{
    "id": 123,
    "child": "Identifier_52",
    "amount": 100
}
// instead of
{
     "id": 123,
     "child": { "identifier" : "Identifier_52" }
     "amount": { "weight": 20, "number": 5 } 
 } 
Run Code Online (Sandbox Code Playgroud)

我们最近考虑切换到Symfony Serializer,到目前为止我还没有找到一种简单的方法来重用或重新实现这些配置(表达式。如果我将属性配置键更改为属性而不是 Exp 属性,则
配置的其他部分(非表达式普通属性的虚拟属性)是可重用的。

它们非常好,因为我不必仅仅为了序列化或自定义规范化器而实现getter (并且非常可读)。

有同等的吗?
如果不是,最接近的方法是什么 - 使其尽可能简短/可读并可在多个实体中重用。

我考虑过创建一个自定义规范器,它将读取序列化配置文件上的注释/自定义配置。我只需要实现它,将其添加到序列化器并添加配置/注释。
那可能吗 ?