1. Go to this page and download the library: Download horizom/dto library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
horizom / dto example snippets
use Horizom\DTO\DTO;
class UserDTO extends DTO
{
public string $name;
public string $email;
public string $password;
}
use App\Enums\UserRole;
use Carbon\Carbon;
use Horizom\DTO\DTO;
use DateTimeImmutable;
use Horizom\DTO\Casting\ArrayCast;
use Horizom\DTO\Casting\EnumCast;
class UserDTO extends DTO
{
public string $id;
public string $name;
public string $email;
public string $password;
public Carbon $created_at;
public DateTimeImmutable $updated_at;
public array $roles;
protected function casts()
{
return [
'id' => 'integer',
'name' => 'string',
'email' => 'string',
'password' => 'string',
'created_at' => Carbon::class,
'updated_at' => DateTimeImmutable::class,
'admin_role' => UserRole::class,
'roles' => new ArrayCast(new EnumCast(UserRole::class)),
];
}
}
use Horizom\DTO\DTO;
use Illuminate\Support\Str;
class UserDTO extends DTO
{
// ...
protected function defaults()
{
return [
'username' => Str::slug($this->name),
];
}
}
public function cast(string $property, mixed $value): mixed;
use Horizom\DTO\Contracts\CastableContract;
class URLCast implements CastableContract
{
public function cast(string $property, mixed $value): URLWrapper
{
return new URLWrapper($value);
}
}
use Horizom\DTO\DTO;
class CustomDTO extends DTO
{
protected function casts()
{
return [
'url' => new URLCast(),
];
}
protected function defaults()
{
return [];
}
}
use Horizom\DTO\DTO;
class CustomDTO extends DTO
{
protected function casts(): array
{
return [
'url' => function (string $property, mixed $value) {
return new URLWrapper($value);
},
];
}
protected function defaults(): array
{
return [];
}
}
use Horizom\DTO\Casting\Cast;
use Horizom\DTO\DTO;
class CustomDTO extends DTO
{
protected function casts()
{
return [
'url' => Cast::make(
function (string $property, mixed $value) {
return new URLWrapper($value);
},
function (string $property, URLWrapper $value) {
return $value->toString();
}
)
];
}
protected function defaults()
{
return [];
}
}
use App\Http\Resources\UserResource;
use Horizom\DTO\DTO;
use Illuminate\Database\Eloquent\Model;
class UserDTO extends DTO
{
public int $id;
public string $name;
public string $email;
public string $password;
public Carbon $created_at;
public CarbonImmutable $updated_at;
public DateTimeImmutable $verified_at;
public static function fromModel(Model $model) {
return new self($model->toArray());
}
public function toModel() {
return new Model($this->toArray());
}
public function toResource() {
return new UserResource($this->toArray());
}
protected function casts()
{
return [
'id' => 'integer',
'name' => 'string',
'email' => 'string',
'password' => 'string',
'created_at' => Carbon::class,
'updated_at' => CarbonImmutable::class,
'verified_at' => DateTimeImmutable::class,
];
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.