021/api-entity

快速便捷地将 JSON 数据转换为 PHP 类

v2.0.1 2024-04-12 11:47 UTC

This package is auto-updated.

Last update: 2024-09-12 12:55:20 UTC


README

Latest Stable Version run-tests Total Downloads License

此包允许您快速便捷地将 JSON 数据转换为 PHP 类。

支持

如果您喜欢这个包,可以通过捐赠一些加密货币来支持我

比特币

1G4U12A7VVVaUrmj4KmNt4C5SaDmCXuW49

莱特币

LXjysogo9AHiNE7AnUm4zjprDzCCWVESai

以太坊

0xd23B42D0A84aB51a264953f1a9c9A393c5Ffe4A1

波场

TWEcfzu2UAPsbotZJh8DrEpvdZGho79jTg

安装

您可以通过 composer 安装此包

composer require 021/api-entity

用法

use O21\ApiEntity\BaseEntity;
use O21\ApiEntity\Casts\Getter;
use SDK\Entities\UserProfile; // Your custom class
use SDK\Entities\UserPet; // Your custom class

use function O21\ApiEntity\Response\json_props;

/**
 * Class User
 * @package SDK\Entities
 *
 * @property int $id
 * @property string $firstName
 * @property string $lastName
 * @property \Carbon\Carbon $registerAt
 * @property UserProfile $profile
 * @property \Illuminate\Support\Collection<UserPet> $pets
 * @property-read string $fullName
 */
class User extends BaseEntity
{
    protected array $casts = [
        'registerAt'     => 'datetime',
        'profile'        => UserProfile::class,
        'pets'           => 'collection:'.UserPet::class,
    ];

    public function fullName(): Getter
    {
        return Getter::make(fn() => $this->firstName.' '.$this->lastName);
    }
}

/** @var \Psr\Http\Message\ResponseInterface $response */
$response = $api->get('/user/1');

// Get decoded JSON array from response
// which is a PSR-7 response or JSON string
$props = json_props($response);
// Create User object from JSON props
$user = new User($props);

// Or just pass response to BaseEntity constructor
$user = new User($response);

echo $user->fullName; // John Doe
echo $user->full_name; // John Doe
echo $user->registerAt->format('Y-m-d H:i:s'); // 2022-01-01 00:00:00
echo $user->profile->phone; // +1234567890
echo $user->pets->first()->name; // Archy

请查看 tests/Entities 以获取更多示例。