Download the PHP package horizom/dto without Composer
On this page you can find all versions of the php package horizom/dto. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Package dto
Short Description Data Transfer Objects for all PHP applications
License MIT
Informations about the package dto
Horizom DTO
Data Transfer Objects for all PHP applications.Data Transfer Objects (DTOs) are objects that are used to transfer data between systems. DTOs are typically used in applications to provide a simple, consistent format for transferring data between different parts of the application, such as between the user interface and the business logic.
Installation
Usage
Defining DTO Properties
Creating DTO Instances
You can create a DTO instance on many ways:
From array
You can also use the fromArray static method:
From JSON strings
Accessing DTO Data
After you create your DTO instance, you can access any properties like an object:
Casting DTO Properties
You can cast your DTO properties to some types:
Defining Default Values
Sometimes we can have properties that are optional and that can have default values. You can define the default values for your DTO properties in the defaults function:
With the DTO definition above you could run:
Built-in Cast Types
The following type alias strings are available out of the box in casts():
| Alias | Class | Description |
|---|---|---|
'string' |
StringCast |
Casts to string via (string) |
'integer' |
IntegerCast |
Casts to int; throws on non-numeric input |
'boolean' |
BooleanCast |
Casts to bool; handles 'true', 'yes', '1', etc. |
'double' |
FloatCast |
Casts to float; throws on non-numeric input |
'array' |
ArrayCast |
Casts to array; accepts JSON strings |
'object' |
ObjectCast |
Casts to stdClass; accepts JSON strings or arrays |
'datetime' |
DateTimeCast |
Casts to DateTimeImmutable (default format Y-m-d H:i:s, UTC) |
For custom formats or timezones, instantiate DateTimeCast directly:
Transforming DTO Data
You can convert your DTO to some formats:
To array
Cast property values are automatically reversed (uncasted) to scalars:
enums → their backing value, DateTimeInterface → formatted string, nested DTOs → recursive array.
To JSON string
DTOs can also be cast directly to string — (string) $dto calls toJson() automatically.
Inspecting DTO State
Check if any data is present
Access original raw input
Re-hydrate an existing instance
Create Your Own Type Cast
Castable classes
You can easily create new Castable types for your project by implementing the Horizom\DTO\Contracts\CastableContract interface. This interface has a single method that must be implemented:
Let's say that you have a URLWrapper class in your project, and you want that when passing a URL into your DTO it will always return a URLWrapper instance instead of a simple string:
Then you could apply this to your DTO:
Callable casts
You can also create new Castable types for your project by using a callable/callback:
Or you can use a static method:
Case of possibility of extending with Laravel
You can extend the DTO class to create your own DTO class with some custom methods:
License
The MIT License (MIT). Please see License File for more information.