evgeek / moysklad
SDK for MoySklad JSON API 1.2
Installs: 6 637
Dependents: 0
Suggesters: 0
Security: 0
Stars: 50
Watchers: 4
Forks: 6
Open Issues: 0
Requires
- php: ^8.1
- guzzlehttp/guzzle: ^7.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.15
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^10.0
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 с глубокой вложенностью.
Встроенная документация
Публичные методы тщательно документированы: описание, примеры кода, ссылки на документацию API.
Обратная связь
Буду рад видеть ваши идеи, пожелания и вопросы в issues.