定制 s25/prices-client 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

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

GitHub 信息

  • Stars: 0
  • Watchers: 2
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: proprietary
  • 更新时间: 2020-03-31

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固