Цей PHP пакет Data Model пропонує легкий та невимушений спосіб рекурсивно заповнювати типобезпечні PHP-об'єкти. Він використовує рефлексію та атрибути PHP для гідратації об'єктів та їх ініціалізації на основі типових підказок:
class Address
{
use \Zerotoprod\DataModel\DataModel;
public string $street;
public string $city;
}
class User
{
use \Zerotoprod\DataModel\DataModel;
public string $username;
public Address $address;
}
$User = User::from([
'username' => 'John Doe',
'address' => [
'street' => '123 Main St',
'city' => 'Hometown',
],
]);
echo $User->address->city; // Hometown
Цей пакет також містить розширені можливості, такі як обов'язкові властивості, що забезпечуються через атрибут PHP:
use Zerotoprod\DataModel\Describe;
class User
{
use \Zerotoprod\DataModel\DataModel;
#[Describe(['required' => true])]
public string $username;
public string $email;
}
User::from(['email' => 'john@example.com']);
// Викидає виняток PropertyRequiredException:
// Властивість: username є обов'язковою
Додаткові пов'язані пакети також пропонують хелпери, фабрики, трансформери та інше. Ви можете ознайомитися з цим пакетом, прочитавши документацію; вихідний код також доступний на GitHub за посиланням zero-to-prod/data-model.