PHP code example of gchernikov / request-resolver-bundle

1. Go to this page and download the library: Download gchernikov/request-resolver-bundle 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/ */

    

gchernikov / request-resolver-bundle example snippets


#[AsResolvableRequest]
class GetAllOrderRequest
{
    #[Date]
    public ?string $dateFrom = null;

    #[Date]
    #[GreaterThanOrEqual(propertyPath: 'dateFrom')]
    public ?string $dateTo = null;
}


#[Route(
    path: '/order',
    name: 'order:get_all',
    methods: [Request::METHOD_GET],
)]
#[OA\Tag('Order')]
#[OA\Get(
    operationId: 'order:get_all',
    description: 'List of all user\'s orders with filtering',
    summary: 'Orders history',
    parameters: [
        new OA\Parameter(
            name: 'dateFrom',
            description: 'Period date from',
            in: 'query',
            schema: new OA\Schema(type: 'date', nullable: true),
        ),
        new OA\Parameter(
            name: 'dateTo',
            description: 'Period date to',
            in: 'query',
            schema: new OA\Schema(type: 'date', nullable: true),
        )
    ],
    responses: [
        new App\Response\Ok(type: GetAllOrderResponse::class),
    ],
)]
#[App\Response\ValidationError]
#[App\Response\UnexpectedError]
class GetAllOrderController extends AbstractController
{
    public function __invoke(GetAllOrderRequest $request): Response
    {
        // Demo for showing request Dto
        dump($request);
        
        // Place some logic to handle your request in $this->operation
        $result = ($this->operation)($request);
        
        return $this->json($result);
    }
}

#[AsResolvableRequest]
final class CreateOrderRequest
{
    #[NotBlank]
    #[GreaterThanOrEqual(1)]
    public int $quantity;
    
    #[NotBlank]
    public int $productId
}


#[Route(
    path: '/product/{productId}/order',
    name: 'order:create',
    methods: [Request::METHOD_POST],
)]
#[OA\Tag('Order')]
#[OA\Post(
    operationId: 'order:create',
    description: 'Create order for a certain product',
    summary: 'Creates order',
    requestBody: new RequestBody(
        lable: false),
            example: 123,
        ),
    ],
    responses: [
        new Created(type: CreateOrderResponse::class),
    ],
)]
class CreateOrderController extends AbstractController
{
    public function __invoke(CreateOrderRequest $request): Response
    {
        // Demo for showing request Dto
        dump($request);
        
        // Place some logic to handle your request in $this->operation
        $result = ($this->operation)($request);
        
        return $this->json($result);
    }
}