Flexible DTO Documentation
Casting
Casting is performed on the input data after it has been validated. The $cast property is used to define the
casting rules, where the key is the name of the property and the value is the casting rule.
use Mass6\FlexibleDTO\DTO;
class MyDTO extends DataTransferObject
{
protected $casts = [
'movie' => 'string',
'releaseDate' => 'date',
'rating' => 'float',
];
protected function allowedProperties(): array
{
return [
'movie',
'releaseDate',
'rating',
];
}
}
Casting Rules
The following casting rules are available.
array : Casts the value to an array.
bool, boolean : Casts the value to a boolean.
collection : Casts the value to an Illuminate\Support\Collection instance.
date : Casts the value to a Carbon\Carbon instance.
double : Casts the value to a double.
float : Casts the value to a float.
int, integer : Casts the value to an integer.
string : Casts the value to a string.
custom : Casts the value to a custom type. The custom type must implement the Mass6\FlexibleDTO\CastsProperties interface.
use Mass6\FlexibleDTO\DTO;
class MyDTO extends DataTransferObject
{
protected function allowedProperties(): array
{
return [
'movie',
'releaseDate',
'rating',
'boxOffice',
];
}
protected function getRules(): array
{
return [
'movie' => 'required|string',
'releaseDate' => 'required|date',
'rating' => 'required|integer',
'boxOffice' => 'required|numeric',
];
}
protected function cast(): array
{
return [
'movie' => 'string',
'releaseDate' => 'date',
'rating' => 'integer',
'boxOffice' => MyCustomType::class,
];
}
}
Custom Cast Types
Custom cast types can be defined by implementing the Mass6\FlexibleDTO\CastsProperties interface. The cast() method
should return the value cast to the appropriate type/format.
use Mass6\FlexibleDTO\Castable;
class MyCustomType implements Castable
{
public function cast($value)
{
return (float) $value;
}
}