1. Go to this page and download the library: Download ray/web-query 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/ */
ray / web-query example snippets
use Ray\MediaQuery\Annotation\WebQuery;
interface UserApiInterface
{
#[WebQuery('user_item')]
public function get(string $id): array;
}
use Ray\Di\Injector;
use Ray\MediaQuery\MediaQueryBaseModule;
use Ray\MediaQuery\MediaQueryWebModule;
use Ray\MediaQuery\Queries;
use Ray\MediaQuery\WebQueryConfig;
$queries = Queries::fromClasses([UserApiInterface::class]);
$webConfig = new WebQueryConfig('web_query.json', ['domain' => 'api.example.com']);
$module = new MediaQueryBaseModule($queries);
$module->install(new MediaQueryWebModule($webConfig));
$injector = new Injector($module);
$api = $injector->getInstance(UserApiInterface::class);
$user = $api->get('123'); // GET https://api.example.com/users/123
use Ray\MediaQuery\Annotation\WebQuery;
interface ProductApiInterface
{
#[WebQuery('product_item', type: 'row', factory: ProductFactory::class)]
public function get(string $id): Product;
#[WebQuery('product_list', factory: ProductFactory::class)]
/** @return array<Product> */
public function list(string $status): array;
}
final class ProductFactory
{
public function __construct(
private TaxCalculator $tax,
) {
}
public function factory(string $name, int $price): Product
{
return new Product($name, $this->tax->applyTax($price));
}
}
final class Product
{
public function __construct(
public readonly string $name,
public readonly int $price,
) {
}
}
#[WebQuery('product_item', type: 'row')]
public function get(string $id): Product; // built via Product::__construct
use Ray\MediaQuery\PostFetchContext;
use Ray\MediaQuery\PostFetchInterface;
final class ProductList implements PostFetchInterface
{
/** @param array<Product> $items */
public function __construct(
public readonly array $items,
public readonly int $total,
) {
}
public static function fromContext(PostFetchContext $context): static
{
/** @var array<Product> $items */
$items = is_array($context->result) ? $context->result : [];
return new self($items, count($items));
}
}
#[WebQuery('product_list', factory: ProductFactory::class)]
public function listAggregate(string $status): ProductList;
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.