PHPackages                             vgrish/yclients-sdk-php - 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. [HTTP &amp; Networking](/categories/http)
4. /
5. vgrish/yclients-sdk-php

ActiveLibrary[HTTP &amp; Networking](/categories/http)

vgrish/yclients-sdk-php
=======================

yclients-sdk-php package for YCLIENTS

1.0.3(1y ago)426MITPHPPHP &gt;=8.1

Since Aug 4Pushed 1y ago1 watchersCompare

[ Source](https://github.com/vgrish/yclients-sdk-php)[ Packagist](https://packagist.org/packages/vgrish/yclients-sdk-php)[ RSS](/packages/vgrish-yclients-sdk-php/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (4)Dependencies (5)Versions (5)Used By (0)

yclients-sdk-php
================

[](#yclients-sdk-php)

SDK для работы с API v1.0 сервиса Yclients
==========================================

[](#sdk-для-работы-с-api-v10-сервиса-yclients)

Библиотека является оберткой для пакета [YclientsOpenApi](https://github.com/vgrish/yclients-openapi-php), позволяющая работать с [Yclients API](https://developers.yclients.com/ru/) и `PHP 8.1+`.

Находится в разработке, версии могут не обладать обратной совместимостью. Список изменений можно найти в [Changelog](CHANGELOG.md).

Установка
---------

[](#установка)

```
composer vgrish/yclients-sdk-php
```

Быстрый старт
-------------

[](#быстрый-старт)

```
use Vgrish\Yclients\Yclients;

$yc = Yclients::getInstance()
    ->setPartnerToken('Partner_token')
    ->setUserToken('User_token');

//Конструктор запросов
$auth = $yc->query()
    ->user()
    ->auth()
    ->param([
        'login'    => 'телефон пользователя',
        'password' => 'пароль пользователя',
    ])
    ->create();

//Получаем токен пользователя
$userToken = $auth->object()->getUserToken();

//Устанавливаем токен пользователя
$yc->setUserToken($userToken);

//Получаем клиентов компании
$clients = $yc->query()
    ->clients()
    ->path('company_id', '111111')
    ->param([
        'fields' => [
            'id',
            'name',
            'phone',
            'email',
        ],
    ])
    ->pageSize(5)
    ->page(1)
    ->get();

foreach ($clients->objects() as $client) {
    var_dump($client->getId().':'$client->getName());
}
```

Особенности
-----------

[](#особенности)

Библиотека предоставляет конструктор запросов (Query) для работы с API.

Конструктор запросов
--------------------

[](#конструктор-запросов)

Позволяет при помощи fluent-цепочки методов собрать запрос к API Yclients. Конструктор запросов вызывается при помощи метода `query()` базового объекта библиотеки.

```
use Vgrish\Yclients\Yclients;

$yc = Yclients::getInstance()
    ->setPartnerToken('Partner_token')
    ->setUserToken('User_token');
$yc->query()->...;
```

Методы формирования запроса
---------------------------

[](#методы-формирования-запроса)

### Сегменты

[](#сегменты)

Делятся на два вида:

- `endpoint` - первый сегмент в запросе после `query()`. Примеры: `clients()`, `loyalty()`.
- `segment` - сегменты, следующие после `endpoint`. Примеры: `auth()`, `card()`.

Сегменты могут иметь набор различных вложенных сегментов и методов которыми обладает сущность, представляемая сегментом.

### Путь запроса

[](#путь-запроса)

- `path()` метод для формирования параметров пути запроса. Несколько параметров можно применить, вызвав метод несколько раз, или при помощи массива.

```
$yc->query()
    ->client()
    ->path('company_id', '11111')
    ->path('id', '22222222')
    //или
    ->path(['company_id' => '11111', 'id' => '22222222'])
    //или
    ->path([
       ['company_id', '11111'],
       ['id', '22222222'],
    ])
    ->get();
```

### Параметры запроса

[](#параметры-запроса)

- `param()` метод для формирования параметров запроса. Несколько параметров можно применить, вызвав метод несколько раз, или при помощи массива.

```
$yc->query()
    ->loyalty()
    ->transactions()
    ->path('chain_id', '33333')
    ->param([
         'created_after'  => '2024-07-10',
         'created_before' => '2024-07-31',
         'company_ids'  => '204265',
         ['types', [5, 6]],
    ])
    ->get([]);
```

- `page($value)` - установка страницы пагинации.
- `count($value)` - установка кол-ва результатов выборки.
- `pageSize($value)` - установка кол-ва результатов выборки. (у разнах сущностей разные параметры запроса)

Методы отправки запросов
------------------------

[](#методы-отправки-запросов)

Запрос (`$request`) можно передавать напрямую в метод запроса в формате array.

- `create($request)` - `POST` запрос для создания сущности.

```
$yc->query()
    ->user()
    ->auth()
    ->create([
        'login'    => 'login',
        'password' => 'password',
    ]);
```

- `get($request)` - `GET` запрос для получения сущности.

```
$yc->query()
    ->client()
    ->get()
```

- `update($request)` - `PUT` запрос для обновления сущности.

```
$yc->query()
    ->client()
    ->get()
    ->update(['name' => 'новое имя клиента'])
```

- `remove($request)` - `DELETE` запрос для удаления сущности.

```
$yc->query()
    ->client()
    ->get()
    ->remove()
```

### Итерация результатов

[](#итерация-результатов)

Объекты коллекции можно получить с помощью objects(). Таким образом, перебор полученного результата можно организовать следующим образом:

```
$clients = $yc->query()
    ->clients()
    ->path('company_id', '111111')
    ->param([
        'fields' => [
            'id',
            'name',
            'phone',
            'email',
        ],
    ])
    ->pageSize(200)
    ->page(1)
    ->get();
foreach ($clients->objects() as $client) {
    var_dump($client);
}
```

Однако, если нужно перебрать всю коллекцию, размер которой больше лимита, коллекцию придётся запрашивать несколько раз, изменяя параметр `page`. Чтобы не организовывать такой перебор вручную, можно использовать метод `generator()`. Он возвращает генератор, перебирающий коллекцию с текущего `page` и до последнего элемента (с отправкой новых запросов, если это необходимо).

```
$generator = $yc->query()
    ->clients()
    ->path('company_id', '111111')
    ->pageSize(200)
    ->generator(function ($builder) {
         $params = $builder->params();
         //Можно прекратить перебор коллекции
         if ($params['page'] > 20) {
             return;
         }
         return $builder->get();
    });
foreach ($generator as $client) {
    $clients[] = $client;
}
```

###  Health Score

28

—

LowBetter than 54% of packages

Maintenance34

Infrequent updates — may be unmaintained

Popularity12

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity51

Maturing project, gaining track record

 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 ~0 days

Total

4

Last Release

643d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/343f8c3c6c5e592667acd94919b830d48bc03320b0c0b718ecbb080c66100d08?d=identicon)[vgrish](/maintainers/vgrish)

---

Top Contributors

[![vgrish](https://avatars.githubusercontent.com/u/3117525?v=4)](https://github.com/vgrish "vgrish (1 commits)")

---

Tags

yclientsyclients-apiyclients-sdkyclients-sdk-phpapirestopenapiyclients

###  Code Quality

Static AnalysisPHPStan

Code StylePHP CS Fixer

Type Coverage Yes

### Embed Badge

![Health badge](/badges/vgrish-yclients-sdk-php/health.svg)

```
[![Health](https://phpackages.com/badges/vgrish-yclients-sdk-php/health.svg)](https://phpackages.com/packages/vgrish-yclients-sdk-php)
```

###  Alternatives

[xendit/xendit-php

Xendit PHP SDK

189730.6k6](/packages/xendit-xendit-php)[infobip/infobip-api-php-client

PHP library for consuming Infobip's API

921.8M10](/packages/infobip-infobip-api-php-client)[api-platform/laravel

API Platform support for Laravel

59126.4k6](/packages/api-platform-laravel)[bamboohr/api

Official PHP SDK for the BambooHR API. https://documentation.bamboohr.com

34101.5k1](/packages/bamboohr-api)

PHPackages © 2026

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