输出格式
创建Serialize类
use Astral\Serialize\Serialize;
use DateTime;
class UserLoginLog extends Serialize {
public string $remark,
public DateTime $create_time;
}
class User extends Serialize {
public string $name,
public int $age,
public UserLoginLog $login_log
}
// 创建对象
$user = User::from([
'name' => '张三',
'age' => 30
], login_log: new UserLoginLog(remark:'测试数据',create_time: DateTime::createFromFormat('Y-m-d','2008-09-01')));
输出对象
// $user默认就是一个对象
echo $user->name; // 输出: 张三
echo $user->age; // 输出: 30
echo $user->login_log->remark; // 输出 '测试数据'
echo $user->login_log->create_time; // 输出 DateTime对象
输出数组
// 转换成数组
$vols = $user->toArray();
echo $vols['name']; // 输出: 张三
echo $vols['age']; // 输出: 30
echo $vols['login_log']['remark']; // 输出 '测试数据'
echo $vols['login_log']['create_time']; // 输出 2008-09-01 00:00:00
// $vols 的内容:
// [
// 'name' => '张三',
// 'age' => 30,
// 'login_log' => [
// [
// 'remark' => '测试数据',
// 'create_time' => '2008-09-01 00:00:00'
// ]
// ]
// ]
输出数组json字符串
Serialize
默认实现了JsonSerializable
类似Laravel
的Controller
可以直接返回对象,框架会正常输出json信息
Serialize
默认json 增加data
code
message
如果需要[替换/修改/增加]
请查看配置信息 响应数据结构定义
输出json信息
可以使用 api
toJsonString
也可以直接使用
json_decode
echo $user->toJsonString();
echo json_decode($user);
// 输出内容相同
// {"code":200,"message":"success","data":{"name":"张三","age":30,"login_log":{"remark":"测试数据","create_time":"2008-09-01 00:00:00"}}
设置输出code/message
$user->setCode(500);
$user->setMessage('操作失败');
echo json_decode($user);
// 输出内容
// {"code":500,"message":"操作失败","data":{"name":"张三","age":30,"login_log":{"remark":"测试数据","create_time":"2008-09-01 00:00:00"}}
设置自定义json外层
withResponses
可以临时增加修改自定义返回信息,全局增加返回信息可以在 响应数据结构定义中配置
$user->withResponses([
"code"=> ["description"=>"返回code", "value"=>401],
"message"=> ["description"=>"返回信息", "value"=>"操作成功"],
"error"=> ["description"=>"返回error", "value"=>0],
]);
// 输出内容
// {"code":401,"message":"操作成功","error":0,"data":{"name":"张三","age":30,"login_log":{"remark":"测试数据","create_time":"2008-09-01 00:00:00"}}
输出不包含外层信息的Json
使用withoutResponseToJsonString
可以返回只有对象属性的json数据
$user->withoutResponseToJsonString();
// 输出内容
// {"name":"张三","age":30,"login_log":{"remark":"测试数据","create_time":"2008-09-01 00:00:00"}
最后更新于