sylvrs/libmarshal

用于将数据打包/解包到对象中的库

1.4.3 2022-04-29 20:07 UTC

This package is auto-updated.

Last update: 2024-09-16 04:13:33 UTC


README

一个用于从类中编码/解码数据的简单打包库。

安装

Composer

要通过composer安装此库,请运行以下命令

composer require sylvrs/libmarshal

Virion

此库的virion可以通过以下链接访问:此处.

基本示例

以下是一个关于如何使用此库的基本示例

class User {
	use MarshalTrait;
	
	public function __construct(
            #[Field(name: "first-name")]
            public string $firstName,
            #[Field(name: "last-name")]
            public string $lastName,
            public int $age,
            public string $email,
            #[Exclude]
            public string $internalData = "..."
	) {}
}

// NOTE: This uses promoted properties to make it easier to construct.
// You can learn more about this below.

// Marshalling
$user = new User(firstName: "John", lastName: "Doe", age: 30, email: "johndoe@gmail.com");
$data = $user->marshal(); // ["first-name" => "John", "last-name" => "Doe", "age" => 30, "email" => "johndoe@gmail.com"]

$data["first-name"] = "Jane"; // Changing the first name
$data["email"] = "janedoe@gmail.com"; // Changing the email

// Unmarshalling
$user = User::unmarshal($data); // User(firstName: "Jane", lastName: "Doe", age: 30, email: "janedoe@gmail.com")

Wiki

有关如何使用此库的详细信息,请参阅以下wiki:此处.

路线图

目前,有一些改进正在进行中。以下是一些改进列表

  • 在打包/解包时对递归对象添加限制(50个?)
  • 缓存属性以提高性能

问题

任何问题/建议都可以通过以下链接报告:此处.