PHPackages                             quantum3k/erply-sdk - 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. [API Development](/categories/api)
4. /
5. quantum3k/erply-sdk

ActiveLibrary[API Development](/categories/api)

quantum3k/erply-sdk
===================

Erply SDK Library

v2.0.0(2y ago)171MITPHPPHP &gt;=7.4

Since May 12Pushed 2y ago1 watchersCompare

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

READMEChangelogDependencies (1)Versions (30)Used By (0)

ERPLY SDK
=========

[](#erply-sdk)

1. Структура
------------

[](#1-структура)

### Namespace

[](#namespace)

- `\ErplySDK` точки входа в API
- `\ErplySDK\DTO` объекты данных основного Eply API
- `\ErplySDK\PIM` объекты данных для Erply PIM *(🛠️ не завершено)*
- `\ErplySDK\Reports` объекты данных для Reports API *(🛠️ не завершено)*
- `\ErplySDK\Bulks` классы для работы с пакетными действиями основного API
- `\ErplySDK\Collections` классы для работы с коллекциями DTO

2. Использование
----------------

[](#2-использование)

### Создание соединения:

[](#создание-соединения)

```
$api = \ErplyAPI::getInstanceWithCredentials($code, $username, $password);
$api->setThrow(false);
$api->setRecordsOnPage(40);
```

### Основные параметры соединения:

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

ПараметрПо-умолчаниюОписание`setCode()`Устанавливает код клиента.`setUsername()`Устанавливает имя пользователя клиента.`setPassword()`Устанавливает пароль клиента.`setAttempts()``3`Устанавливает кол-во попыток повторных авторизации в случае завершения сессии во время запроса.`setSessionLength()``3600`Устанавливает длину сессии в секундах.`setRecordsOnPage()``20`Устанавливает кол-во записей на страницу.`setThrow()``true`Устанавливает будет ли при вызове API методов выбрасываться исключение с типом `\ErplySDK\ApiException`, если будет получен ответ с ошибкой от Erply.`setLogSensitivity()``[]`Устанавливает массив типов сообщений для сбора в журнал. Возможное значения: `LOG_NOTICE`, `LOG_ERROR`, `LOG_DEBUG``setLogForward()`Устанавливает обратный вызов для пересылки логов (последовательность получаемых аргументов: `$message`, `$type`, `$datetime`)`getLog()`Получить записи журнала. Можно указать необязательный параметр для получения конкретного типа записей.`hasLog()`Проверить, содержится ли в журнале записи определенного типа сообщений.### Как добавлять вложенные элементы в объекты:

[](#как-добавлять-вложенные-элементы-в-объекты)

```
use ErplyAPI;

$doc = new DTO\SaleDocument();

$row = $doc->addRow();
$row->rowID = 100;
$row->code = 2048;

$row = $doc->addRow();
$row->rowID = 200;
$row->code = 4096;
```

### Сохранение:

[](#сохранение)

```
$api->saveSalesDocument($doc);
```

### Получение:

[](#получение)

```
$response = $api->getSalesDocuments(['clientIDs' => '128, 256, 512, 1024']);
```

Когда объект в ответе реализован от коллекции `\ErplySDK\Collections`, то такой объект можно итерировать стандартными средствами PHP, соединение само будет запрашивать все последующие страницы, пока не закончится обход всех записей в запросе:

```
foreach ($response as $record) {
    echo "Client {$record->clientName}, with email: {$record->clientEmail}" . PHP_EOL;
}
```

3. Пользовательские запросы
---------------------------

[](#3-пользовательские-запросы)

У экземпляра соединения есть два метода которые совершают непосредственный запрос к серверу используя текущее соединение. Ответ на такие запросы всегда будет не типизированный, т.е. ассоциативный массив.

```
// Стандартный запрос
$response = $api->stdRequest($params);
// Пакетный запрос
$response = $api->bulkRequest($params);
```

Для стандартных запросов Erply в качестве параметра имени запроса ожидает ключ `request`, а для пакетных запросов ожидает ключ `requestName`, для этого у соединения есть две константы, которые следует использовать в качестве ключа имени запроса `STD_REQ` и `BULK_REQ`.

### Стандартный пользовательский запрос:

[](#стандартный-пользовательский-запрос)

На такой запрос будет получен не типизированный ответ, т.е. ассоциативный массив.

```
$response = $api->stdRequest([$api::STD_REQ => 'getCustomers', 'searchName' => 'John']);
```

### Пакетный пользовательский запрос:

[](#пакетный-пользовательский-запрос)

Также можно отправить пакетный запрос. На такой запрос будет получен не типизированный ответ, т.е. ассоциативный массив.

```
$response = $api->bulkRequest([
    [$api::BULK_REQ => 'getCustomers', 'searchPersonFirstName' => 'John'],
    [$api::BULK_REQ => 'getVatRates'],
    [$api::BULK_REQ => 'getEmployees'],
]);
```

### Пакетный пользовательский запрос *(типизированный)*:

[](#пакетный-пользовательский-запрос-типизированный)

Также можно получить типизированный ответ на пакетный пользовательский запрос. В этом случае все известные вложенные запросы будут инициализированы как коллекции.

```
$response = $api->getBulkResponse([
    [$api::BULK_REQ => 'getCustomers', 'searchPersonFirstName' => 'John'],
    [$api::BULK_REQ => 'getVatRates'],
    [$api::BULK_REQ => 'getEmployees'],
]);
$collections = $response->getRequests();
```

> ⚠️ На данный момент коллекции полученные через пользовательский пакетный запрос не позволяют использовать итерацию записей.

4. Дополнительно
----------------

[](#4-дополнительно)

Прямой вызов родительских методов `current()` и `getRecords()`у всех наследников от абстракции `BaseEntityCollection` нужен для того, чтобы у детей определить конкретный возвращаемый тип.

5. Roadmap
----------

[](#5-roadmap)

- Реализовать атрибуты во всех сущностях как отдельные коллекции.
- Реализовать итерацию записей полученную через типизированный пользовательский пакетный запрос.

###  Health Score

25

—

LowBetter than 37% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity10

Limited adoption so far

Community4

Small or concentrated contributor base

Maturity55

Maturing project, gaining track record

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

Total

28

Last Release

836d ago

Major Versions

v1.0.25 → v2.0.02024-01-24

PHP version history (2 changes)v1.0.0PHP &gt;=7.0.0

v2.0.0PHP &gt;=7.4

### Community

Maintainers

![](https://www.gravatar.com/avatar/804df0c57d9f00d341a9a574687573bffb61d654fa8c6f466c9718a2990445f7?d=identicon)[quantum3k](/maintainers/quantum3k)

---

Tags

apisdkweb serviceerply

### Embed Badge

![Health badge](/badges/quantum3k-erply-sdk/health.svg)

```
[![Health](https://phpackages.com/badges/quantum3k-erply-sdk/health.svg)](https://phpackages.com/packages/quantum3k-erply-sdk)
```

###  Alternatives

[openai-php/laravel

OpenAI PHP for Laravel is a supercharged PHP API client that allows you to interact with the Open AI API

3.7k7.6M74](/packages/openai-php-laravel)[saloonphp/saloon

Build beautiful API integrations and SDKs with Saloon

2.4k9.6M467](/packages/saloonphp-saloon)[hubspot/api-client

Hubspot API client

23414.2M16](/packages/hubspot-api-client)[php-opencloud/openstack

PHP SDK for OpenStack APIs. Supports BlockStorage, Compute, Identity, Images, Networking and Metric Gnocchi

2292.2M23](/packages/php-opencloud-openstack)[mailchimp/transactional

458.9M16](/packages/mailchimp-transactional)[resend/resend-php

Resend PHP library.

564.7M21](/packages/resend-resend-php)

PHPackages © 2026

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