evgeek/moysklad

SDK for MoySklad JSON API 1.2

v0.11.1 2024-01-10 20:41 UTC

README

Универсальная библиотека, позволяющий работать с MoySklad API 1.2 и PHP 8.1+.

Находится в разработке, версии до v1.0.0 могут не обладать обратной совместимостью. Список изменений можно найти в Changelog. Инструкция по обновлению для версий, не поддерживающих обратную совместимость - Upgrade guide.

Установка

composer require evgeek/moysklad

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

use Evgeek\Moysklad\Api\Record\Objects\Entities\Product;
use Evgeek\Moysklad\MoySklad;

$ms = new MoySklad(['token']);

//Конструктор запросов
$product = $ms->query()
    ->entity()
    ->product()
    ->byId('25cf41f2-b068-11ed-0a80-0e9700500d7e')
    ->get();

//Active Record
$product = Product::make($ms);
$product->id = '25cf41f2-b068-11ed-0a80-0e9700500d7e';
$product->get();
//Или
$product = Product::make($ms, ['id' => '25cf41f2-b068-11ed-0a80-0e9700500d7e'])->get();

Полная документация

Особенности

Библиотека предоставляет два подхода к работе с API - конструктор запросов (Query) и объектный (Record). Подходы полностью совместимы и взаимозаменяемы.

Конструктор запросов (Документация)

Позволяет при помощи fluent-цепочки методов собрать абсолютно любой запрос к API Моего Склада.

$products = $ms->query()
    ->entity()
    ->product()
    ->order('name')
    ->limit(3)
    ->get();

foreach ($products as $product) {
    var_dump($product->name);
}

Объектный подход (Документация)

Подход, основанный на концепции Active Record. Каждая сущность Моего Склада представлена отдельным классом, набор сущностей - коллекцией. Намного более лаконичный, хоть и менее универсальный, чем конструктор запросов, способ взаимодействия с API.

Product::collection($ms)
    ->eachGenerator(function (Product $product) {
        $product->name = mb_strtoupper($product->name);
        $product->update();
    });

Из прочих плюсов - возможность расширять объекты сущностей собственными методами и автоподсказки свойств для IDE с глубокой вложенностью.

autocomplete

Встроенная документация

Публичные методы тщательно документированы: описание, примеры кода, ссылки на документацию API.

comment

Обратная связь

Буду рад видеть ваши идеи, пожелания и вопросы в issues.