wearelaradev / serializable
序列化特性
dev-main
2024-04-11 18:32 UTC
Requires
- php: >=8.2.0
This package is not auto-updated.
Last update: 2024-09-17 18:09:43 UTC
README
此 PHP 包实现了序列化功能。名为 "Serializable" 的序列化特性允许您将任何 PHP 对象序列化为数组或 JSON。它还使实现此特性的任何对象能够成为它自己的序列化器。
入门
composer require wearelaradev/serializable
用法
属性必须是公共的或具有关联的获取器才能进行序列化。
基本用法
use Laraved\Serializable\Serializable; class MyObject { use Serializable; public string $foo = "foo"; public string $bar = "bar"; } var_dump((new MyObject())->toArray()); // output // ["foo" => "foo", "bar" => "bar"] var_dump((new MyObject())->toJson()); // output // "{"foo": "foo", "bar": "bar"}"
与获取器一起使用
use Laradev\Serializable\Serializable; class MyObject { use Serializable; private string $foo = "foo"; protected string $bar = "bar"; public function getFoo(): string { return $this->foo; } } var_dump((new MyObject())->toArray()); // output // ["foo" => "foo"] var_dump((new MyObject())->toJson()); // output // "{"foo": "foo"}"
与白名单和黑名单策略一起使用
您可以使用属性或函数应用白名单或黑名单策略到序列化属性。
使用属性
白名单
use Laradev\Serializable\Serializable; class MyObject { use Serializable; private array $whitelist = [ "foo" ]; public string $foo = "foo"; public string $bar = "bar"; } var_dump((new MyObject())->toArray()); // output // ["foo" => "foo"] var_dump((new MyObject())->toJson()); // output // "{"foo": "foo"}"
黑名单
use Laradev\Serializable\Serializable; class MyObject { use Serializable; private array $blacklist = [ "foo" ]; public string $foo = "foo"; public string $bar = "bar"; } var_dump((new MyObject())->toArray()); // output // ["bar" => "bar"] var_dump((new MyObject())->toJson()); // output // "{"bar": "bar"}"
使用函数
白名单
use Laradev\Serializable\Serializable; class MyObject { use Serializable; public string $foo = "foo"; public string $bar = "bar"; protected function whitelist(): array { // your logic return [ "foo" ]; } } var_dump((new MyObject())->toArray()); // output // ["foo" => "foo"] var_dump((new MyObject())->toJson()); // output // "{"foo": "foo"}"
黑名单
use Laradev\Serializable\Serializable; class MyObject { use Serializable; public string $foo = "foo"; public string $bar = "bar"; protected function blacklist(): array { // your logic return [ "foo" ]; } } var_dump((new MyObject())->toArray()); // output // ["bar" => "bar"] var_dump((new MyObject())->toJson()); // output // "{"bar": "bar"}"
其他信息
如果您遇到错误或对改进有任何想法,请随时发送 PR 或通过电子邮件联系我 florian@laradev.ca :)