use Astral\Serialize\Attributes\Input\InputIgnore;
use Astral\Serialize\Attributes\Output\OutputIgnore;
use Astral\Serialize\Serialize;
use Astral\Serialize\Attributes\Groups;
class ComplexUser extends Serialize {
#[Groups('admin','public')]
#[InputIgnore('admin')]
public string $name;
#[Groups('admin','public')]
#[OutputIgnore('public')]
public string $secretKey;
#[Groups('admin','public')]
#[InputIgnore('admin')]
#[OutputIgnore('public')]
public string $sensitiveInfo;
#[InputIgnore]
public string $globalInputIgnore;
#[OutputIgnore]
public string $globalOutputIgnore;
}
// 默认分组
$complexUser = ComplexUser::from([
'name' => '张三',
'secretKey' => 'confidential',
'sensitiveInfo' => '机密信息',
'globalInputIgnore' => '全局输入忽略',
'globalOutputIgnore' => '全局输出忽略'
]);
echo $complexUser->globalInputIgnore; // 输出 ‘’
echo $complexUser->globalOutputIgnore; // 输出 ‘全局输出忽略’
$complexUser = $complexUser->toArray();
// $complexUser 的内容:
// [
// 'name' => '张三',
// 'secretKey' => 'confidential',
// 'sensitiveInfo' => '机密信息',
// 'globalInputIgnore' => '',
// ]
// 使用admin分组
$complexUser = ComplexUser::setGroups('admin')->from([
'name' => '张三',
'secretKey' => 'confidential',
'sensitiveInfo' => '机密信息'
'globalInputIgnore' => '全局输入忽略',
'globalOutputIgnore' => '全局输出忽略'
]);
$complexUser = $complexUser->toArray();
// $complexUser 的内容:
// [
// 'name' => '',
// 'secretKey' => 'confidential',
// 'globalInputIgnore' => '',
// ]
// 使用public分组
$complexUser = ComplexUser::setGroups('public')->from([
'name' => '张三',
'secretKey' => 'confidential',
'sensitiveInfo' => '机密信息'
'globalInputIgnore' => '全局输入忽略',
'globalOutputIgnore' => '全局输出忽略'
]);
$complexUser = $complexUser->toArray();
// $complexUser 的内容:
// [
// 'name' => '张三',
/// 'globalInputIgnore' => '',
// ]