It's even easier to develop SDKs for your APIs

This package allows you to quickly and conveniently interpret JSON data into PHP classes.
Support
If you like this package, you can support me by donating some cryptocurrency:
Bitcoin
1G4U12A7VVVaUrmj4KmNt4C5SaDmCXuW49
Litecoin
LXjysogo9AHiNE7AnUm4zjprDzCCWVESai
Ethereum
0xd23B42D0A84aB51a264953f1a9c9A393c5Ffe4A1
Tron
TWEcfzu2UAPsbotZJh8DrEpvdZGho79jTg
Installation
You can install the package via composer:
composer require 021/api-entity
Usage
After 2.1
2.1 version introduces an automatically casts parsing from phpdoc.
You can use @property and @property-read annotations to define property types.
use O21\ApiEntity\BaseEntity;
use O21\ApiEntity\Casts\Getter;
use SDK\Entities\UserProfile;
use SDK\Entities\UserPet;
use function O21\ApiEntity\Response\json_props;
class User extends BaseEntity
{
public function fullName(): Getter
{
return Getter::make(fn() => $this->firstName.' '.$this->lastName);
}
}
$response = $api->get('/user/1');
$props = json_props($response);
$user = new User($props);
$user = new User($response);
echo $user->fullName;
echo $user->full_name;
echo $user->registerAt->format('Y-m-d H:i:s');
echo $user->profile->phone;
echo $user->pets->first()->name;
Before 2.1
use O21\ApiEntity\BaseEntity;
use O21\ApiEntity\Casts\Getter;
use SDK\Entities\UserProfile;
use SDK\Entities\UserPet;
use function O21\ApiEntity\Response\json_props;
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);
}
}
$response = $api->get('/user/1');
$props = json_props($response);
$user = new User($props);
$user = new User($response);
echo $user->fullName;
echo $user->full_name;
echo $user->registerAt->format('Y-m-d H:i:s');
echo $user->profile->phone;
echo $user->pets->first()->name;
Check tests/Entities for more examples.