首页 > 解决方案 > 公共属性的 json_encode() 行为

问题描述

我知道这有效:

<?php 

class MyDTO 
{
    public $foo;
    public $bar;
}

$dto = new MyDTO();
$dto->foo = 42;
$dto->bar = false;

echo json_encode($dto); // {"foo": 42, "bar": false}

但是我在 PHP 文档中找不到对这种json_encode()行为的任何引用。所以我的问题是:可以依赖它吗?

或者,我可以实现\JsonSerializable接口,但我不喜欢在内部重复 DTO 字段,\JsonSerializable#jsonSerialize()因为这些 DTO 将只包含公共字段。

标签: phpjsonserialization

解决方案


推荐阅读