PHPackages                             s25/prices-client - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. s25/prices-client

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

s25/prices-client
=================

Client for parts' prices' services

3.0.0(1y ago)05.1k↑235.7%[2 PRs](https://github.com/shop25/prices-client/pulls)proprietaryPHPPHP ^8.2

Since Mar 31Pushed 1y ago2 watchersCompare

[ Source](https://github.com/shop25/prices-client)[ Packagist](https://packagist.org/packages/s25/prices-client)[ RSS](/packages/s25-prices-client/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (2)Versions (20)Used By (0)

Обзор
-----

[](#обзор)

*S25\\PricesApiClient\\Client* - класс клиента API, включает методы вида *requestApiMethod*, возвращающие инстансы запросов, реализующие интерфейс *S25\\PricesApiClient\\Contract\\ApiMethodRequestContract*.

Интерфейсы запросов наследуют из базового интерфейса методы *perform()* и *performAsync()* для синхронного и асинхронного выполнения соответственно.

В комментарии интерфейса запроса есть информация о:

- обязательных сеттерах, вызываемых перед выполнением запроса,
- формате возвращаемых данных.

Сервис не проверяет наличие поставщиков, брэндов, номеров и прочих объектов и связей между ними, только форматы некоторых входных данных. При запросе несуществующих или отключенных объектов, ответ сервера будет содержать только данные по корректным объектам.

Входные и выходные данные
-------------------------

[](#входные-и-выходные-данные)

Все методы API-запросов следуют следующим соглашениям:

Методы вида `set{Param}s` всегда идут в паре с `add{Param}` для попунктного заполнения параметров.

Возвращаемые цены всегда за 1 упаковку.

Пример инициализации клиента API
--------------------------------

[](#пример-инициализации-клиента-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!
        }
    }
}
```

###  Health Score

42

—

FairBetter than 90% of packages

Maintenance46

Moderate activity, may be stable

Popularity22

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity77

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~114 days

Recently: every ~198 days

Total

17

Last Release

407d ago

Major Versions

1.2.2 → 2.0.02022-12-27

2.4.0 → 3.0.02025-04-06

PHP version history (4 changes)1.0.0PHP ^7.4

1.1.3PHP ^7.4||^8.0

2.0.0PHP ^8.0

3.0.0PHP ^8.2

### Community

Maintainers

![](https://www.gravatar.com/avatar/0f4fdc7673245bb554dd39554242033139ab2350c8826f56b759d085c0d35088?d=identicon)[yakimov](/maintainers/yakimov)

---

Top Contributors

[![ssipak](https://avatars.githubusercontent.com/u/1546757?v=4)](https://github.com/ssipak "ssipak (25 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/s25-prices-client/health.svg)

```
[![Health](https://phpackages.com/badges/s25-prices-client/health.svg)](https://phpackages.com/packages/s25-prices-client)
```

###  Alternatives

[shlinkio/shlink

A self-hosted and PHP-based URL shortener application with CLI and REST interfaces

4.8k4.3k](/packages/shlinkio-shlink)[ralphjsmit/laravel-helpers

A package containing handy helpers for your Laravel-application.

13704.6k2](/packages/ralphjsmit-laravel-helpers)[dhlparcel/magento2-plugin

DHL Parcel plugin for Magento 2

11180.5k2](/packages/dhlparcel-magento2-plugin)[aedart/athenaeum

Athenaeum is a mono repository; a collection of various PHP packages

245.2k](/packages/aedart-athenaeum)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
