PHP code example of pepperfm / ssd-for-laravel

1. Go to this page and download the library: Download pepperfm/ssd-for-laravel 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/ */

    

pepperfm / ssd-for-laravel example snippets


use Pepperfm\Ssd\BaseDto;

class ResponseWrapperDto extends BaseDto
{
    public array $data;

    public LinksDto $links;

    public MetaDto $meta;
}

$dto = ResponseWrapperDto::make([
    'data' => $response['data'],
    'links' => $response['links'],
    'meta' => $response['meta'],
]);

$dto = new ResponseWrapperDto(
    data: $response['data'],
    links: $response['links'],
    meta: $response['meta'],
);

use Pepperfm\Ssd\BaseDto;

class LinksDto extends BaseDto
{
    public ?string $first = null;

    public ?string $last = null;

    public ?string $prev = null;

    public ?string $next = null;
}

class MetaDto extends BaseDto
{
    public int $currentPage;

    public int $total;
}

use Pepperfm\Ssd\Attributes\ToIterable;
use Pepperfm\Ssd\BaseDto;

class ResponseDataDto extends BaseDto
{
    public string $id;

    public string $name;
}

class ResponseWrapperDto extends BaseDto
{
    #[ToIterable(ToIterable::ARRAY, ResponseDataDto::class)]
    public array $data = [];
}

/** @var array<array-key, ResponseDataDto> $items */
$items = $dto->data;

use Illuminate\Support\Collection;
use Pepperfm\Ssd\Attributes\ToIterable;
use Pepperfm\Ssd\BaseDto;

class ResponseWrapperDto extends BaseDto
{
    #[ToIterable(Collection::class, ResponseDataDto::class)]
    public Collection $data;
}

/** @var Collection<array-key, ResponseDataDto> $items */
$items = $dto->data;

use Pepperfm\Ssd\Attributes\ToIterable;
use Pepperfm\Ssd\BaseDto;

class TagsDto extends BaseDto
{
    #[ToIterable(ToIterable::ARRAY)]
    public array $tags = [];
}

use Pepperfm\Ssd\Attributes\MapName;
use Pepperfm\Ssd\BaseDto;

class UserDto extends BaseDto
{
    #[MapName('external_name')]
    public string $displayName;
}

$dto = UserDto::make([
    'external_name' => 'Ada',
]);

$dto->displayName; // Ada
$dto->external_name; // Ada
$dto->toArray(); // ['external_name' => 'Ada']

$items = ResponseDataDto::collect($response['data']);

$dto->only('data', 'meta');
$dto->except('links');

$dto->toArray();
$dto->jsonSerialize();
json_encode($dto);