1. Go to this page and download the library: Download cerbero/laravel-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/ */
cerbero / laravel-dto example snippets
class User extends Model
{
public function posts()
{
return $this->hasMany('App\Post');
}
}
use Cerbero\LaravelDto\Dto;
use Carbon\Carbon;
use const Cerbero\Dto\PARTIAL;
use const Cerbero\Dto\IGNORE_UNKNOWN_PROPERTIES;
/**
* The data transfer object for the User model.
*
* @property int $id
* @property string $name
* @property Carbon $createdAt
* @property Carbon $updatedAt
* @property PostData[] $posts
*/
class UserData extends Dto
{
/**
* The default flags.
*
* @var int
*/
protected static $defaultFlags = PARTIAL | IGNORE_UNKNOWN_PROPERTIES;
}
/**
* The data transfer object for the Post model.
*
* @property int $id
* @property string $content
* @property int $userId
* @property Carbon $createdAt
* @property Carbon $updatedAt
* @property UserData $user
*/
class PostData extends Dto
{
/**
* The default flags.
*
* @var int
*/
protected static $defaultFlags = PARTIAL | IGNORE_UNKNOWN_PROPERTIES;
}
use Cerbero\LaravelDto\DtoQualifierContract;
class MyDtoQualifier implements DtoQualifierContract
{
public function qualify(string $model): string
{
return $model . 'Dto';
}
}
// in config/dto.php
return [
'qualifier' => MyDtoQualifier::class,
];
use App\Dtos\UserData;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class UserController extends Controller
{
public function store(Request $request)
{
$dto = UserData::fromRequest($request);
}
}
$user = new User(['name' => 'Phil']);
$dto = UserData::fromModel($user);
use App\Dtos\UserData;
use App\Http\Controllers\Controller;
class UserController extends Controller
{
public function store(UserData $dto)
{
// ...
}
}
use Cerbero\LaravelDto\Traits\TurnsIntoDto;
class StoreUserRequest extends Request
{
use TurnsIntoDto;
}
class User extends Model
{
use TurnsIntoDto;
protected $dtoClass = UserData::class;
}
class Example
{
use TurnsIntoDto;
protected function getDtoClass(): ?string
{
return $condition ? UserData::class : OtherDto::class;
}
}
$dto = $request->toDto(UserData::class, MUTABLE);
$dto = $user->toDto(CAST_PRIMITIVES);
$dto = $example->toDto();