Skip to content

Latest commit

 

History

History
40 lines (32 loc) · 859 Bytes

File metadata and controls

40 lines (32 loc) · 859 Bytes

Action Class

<?php

declare(strict_types=1);

use CommonPHP\API\ApiRequest;
use CommonPHP\API\ApiSurface;
use CommonPHP\API\Contracts\AbstractAction;
use CommonPHP\Router\RouteMatch;

final class ShowUserAction extends AbstractAction
{
    public function handle(ApiRequest $request, RouteMatch $match): mixed
    {
        return $this->ok([
            'id' => $request->routeParameter('id'),
            'include' => $request->query('include', 'profile'),
        ]);
    }
}

$api = new ApiSurface();
$api->get('/users/{id}', ShowUserAction::class);

Requesting /api/users/42 returns a success envelope:

{
  "status": "success",
  "data": {
    "id": "42",
    "include": "profile"
  }
}

Use plain ActionInterface when you do not need response helpers. Use AbstractAction when the helpers make the action easier to read.