1. Go to this page and download the library: Download danack/typespec 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/ */
danack / typespec example snippets
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
class SearchController
{
public function index(Request $request, SearchRepo $searchRepo): JsonResponse
{
$searchParams = SearchParams::createFromRequest($request);
$data = $searchRepo->search($searchParams);
return $this->json($data);
}
}
class SearchParameters implements DataType
{
use CreateFromRequest;
use CreateFromVarMap;
use GetInputTypesFromAttributes;
public function __construct(
#[SearchTerm('search')]
public string $phrase,
#[MaxItems('limit')]
public int $limit,
#[ArticleSearchOrdering('order')]
public Ordering $ordering,
) {
}
}
use DataType\ExtractRule\GetString;
use DataType\InputType;
use DataType\HasInputType;
use DataType\ProcessRule\MaxLength;
use DataType\ProcessRule\MinLength;
#[\Attribute]
class SearchTerm implements HasInputType
{
public function __construct(
private string $name
) {
}
public function getInputType(): InputType
{
return new InputType(
$this->name,
new GetString(),
new MinLength(3),
new MaxLength(200),
);
}
}
namespace DataTypeExample\InputTypes;
use DataType\InputType;
use DataType\ExtractRule\GetIntOrDefault;
use DataType\HasInputType;
use DataType\ProcessRule\MaxIntValue;
use DataType\ProcessRule\MinIntValue;
#[\Attribute]
class MaxItems implements HasInputType
{
public function __construct(
private string $name
) {
}
public function getInputType(): InputType
{
return new InputType(
$this->name,
new GetIntOrDefault(20),
new MinIntValue(1),
new MaxIntValue(200),
);
}
}