s25/prices-client
最新稳定版本:3.0.0
Composer 安装命令:
composer require s25/prices-client
包简介
Client for parts' prices' services
README 文档
README
S25\PricesApiClient\Client - класс клиента API, включает методы вида requestApiMethod, возвращающие инстансы запросов, реализующие интерфейс S25\PricesApiClient\Contract\ApiMethodRequestContract.
Интерфейсы запросов наследуют из базового интерфейса методы perform() и performAsync() для синхронного и асинхронного выполнения соответственно.
В комментарии интерфейса запроса есть информация о:
- обязательных сеттерах, вызываемых перед выполнением запроса,
- формате возвращаемых данных.
Сервис не проверяет наличие поставщиков, брэндов, номеров и прочих объектов и связей между ними, только форматы некоторых входных данных. При запросе несуществующих или отключенных объектов, ответ сервера будет содержать только данные по корректным объектам.
Входные и выходные данные
Все методы API-запросов следуют следующим соглашениям:
Методы вида set{Param}s всегда идут в паре с add{Param} для попунктного
заполнения параметров.
Возвращаемые цены всегда за 1 упаковку.
Пример инициализации клиента API
Инстанцируем клиент, запрос, указываем необходимые параметры запроса.
use S25\PricesApiClient\Client; $client = new Client('http://service.url', 'SHOP-API-KEY'); $request = $client->requestPrices() ->addProduct(['brandSlug', 'RAWPARTNUMBER1']) ->addProduct('guid') ->addCurrencyCode('CUR');
Далее, получение данных может быть как синхронным:
use S25\PricesApiClient\Contracts\Request; /** @var Request\PricesRequestContract $request */ $bestPricesResponse = $request->perform(); var_dump($bestPricesResponse);
, так и асинхронным:
use S25\PricesApiClient\Contracts\Request; /** @var Request\PricesRequestContract $request */ $request->performAsync() ->then(static function ($bestPricesResponse) { var_dump($bestPricesResponse); }) ->wait();
Генераторы
Дополнительны метод iterate класса PaginateAllRequestContract
позволяет последовательно получить все цены для всех товаров в цикле foreach:
use S25\PricesApiClient\Contracts\Request; /** @var Request\PaginateAllRequestContract $request */ foreach ($request->iterate() as [ 'brandSlug' => $brandSlug, 'rawNumber' => $rawNumber, 'number' => $number, 'name' => $name, 'prices' => $prices, ]) { foreach ($prices as $supplierSlug => $supplierPrices) { foreach ($supplierPrices as $currencyCode => [$price, $perPack]) { // ... just DO IT! } } }
统计信息
- 总下载量: 5.32k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 2
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: proprietary
- 更新时间: 2020-03-31