Все существенные изменения в проекте будут задокументированы в этом файле. Формат основан на Keep a Changelog, и этот проект придерживается семантического версионирования (semver).
v0.12.0[Upgrade guide]
- В
GuzzleSender
при помощи параметра$requestOptions
можно задавать параметры запросов по умолчанию - допустим, таймаут. Полный список параметров можно найти в документации Guzzle.
- Поправлен баг, из-за которого в Record-коллекциях пустое свойство
rows
конвертировалось вstdClass
. Теперь оно остаётся пустым массивом.
- Метод конструктора запросов
fromUrl()
теперь корректно обрабатывает имена query-параметров url с точками и нижними подчёркиваниями.
v0.11.0[Upgrade guide]
- Удалён класс
AttributeMetadata
и связанные с ним хелперы. Причина - у разных сущностей он доступен по разному пути, структура тоже отличается, поэтому его текущая реализация некорректна. Также в связи с нестандартным поведением, требует особую логику создания, что будет сделано позднее.
- В Query Builder возвращена возможность делать несколько последовательных вызовов
->byId()
v0.10.0 [Upgrade guide]
- Реализовано большинство сущностей Моего Склада - и в Конструкторе запросов, и в Record.
- debug-метод для
massCreateUpdate()
- Имена классов Record приведены к PascalCase.
- Имена классов Query сегментов приведены к единому виду.
- Словари
Document
,Endpoint
иEntity
заменены наSegment
(сегменты в url) иType
(type в meta сущности).
\Evgeek\Moysklad\Formatters\StringFormat::class
отныне не требует, чтобы ответ от API был в json формате. Это позволяет при помощи данного форматтера работать с любыми ответами, включая файлы.
- В связи с переездом API Моего Склада на новый домен внесены все необходимые правки: изменён url API, в заголовки добавлено gzip-сжатие. Пользователям библиотеки вносить какие-либо изменения в код в связи с этим не требуется. До 1 декабря 2023 года обновите версию библиотеки до
v0.9.0
или выше согласно Upgrade guide.
- Исправлен баг со строковым списком в объектах Record.
- Исправлен баг со свойством
type
в объектах Record.
v0.8.0 [Upgrade guide]
- Реализована работа с API через Active Record объекты.
use Evgeek\Moysklad\Api\Record\Objects\Entities\Product;
use Evgeek\Moysklad\MoySklad;
$ms = new MoySklad(['token'])
$product = Product::make($ms, ['name' => 'orange'])->create();
$product->code = '1234567';
$product->update();
-
В конструктор запросов добавлен метод
massCreateUpdate()
, позволяющий создавать и/или обновлять по нескольку объектов за раз. -
В конструктор запросов добавлен метод
fromUrl($url, $withParams)
, позволяющий строить запросы из уже имеющегося url:
$orderUrl = 'https://online.moysklad.ru/api/remap/1.2/entity/customerorder/3aba2611-c64f-11ed-0a80-108a00230a9c';
$orderPositions = $ms
->query()
->fromUrl($orderUrl)
->positions()
->get();
- В ошибку запроса
Evgeek\Moysklad\Exceptions\RequestException
добавлены методы:getRequest()
- возвращает PSR-7 объект HTTP запроса, если он существует.getResponse()
- возвращает PSR-7 объект HTTP ответа, если он существует.getContent()
- Возвращает содержимое HTTP ответа, отформатированное текущим форматтером, илиnull
в случае отсутствия содержимого.
- Переписана документация.
- Реорганизация namespace
Evgeek\Moysklad\Api
. - Методы
Evgeek\Moysklad\Formatters\JsonFormatterInterface
теперь динамические. - Аргументы в методе
Meta::state()
приведены к общей логике. - Максимальное количество символов ответа от API по умолчанию в
Evgeek\Moysklad\Http\GuzzleSenderFactory
увеличено до 4000.
- Удалён устаревший метод
filters()
. Его функциональность теперь целиком возложена наfilter()
.
- Явная установка форматирования в хелпере
Meta
. Meta::entity()
. Вместо этого метода используйтеMeta::create()
.
v0.7.0 [Upgrade guide]
- В методы для формирования query-параметров запроса, подразумеющих возможность передачи нескольких значений (
filter()
,order()
,expand()
иparams()
) можно передавать несколько наборов значений за раз при помощи массива массивов. Примеры есть в README и PHPDoc методов. - Полное покрытие проекта unit тестами.
- Настройка отправителя запросов реализована через фабрику. Конструктор стандартной
Evgeek\Moysklad\Http\GuzzleSenderFactory
принимает параметры$retries
и$exceptionTruncateAt
, отвечающие за количество попыток повторной отправки запроса и лимит тела ответа в выбрасываемых исключениях соответственно. - Форматтер инициализируется объектом, а не именем класса.
- Приведение метода
expand()
к общей логике. Теперь у него только один аргумент, и есть возможность передать одновременно несколько полей через массив. - Переработаны исключения:
ApiException
переименован в более логичныйRequestException
, остальные заменены стандартнымиInvalidArgumentException
иUnexpectedValueException
. - Реорганизация пространства имён
Evgeek\Moysklad\Api
. - Имена классов приведены к PSR Naming Conventions.
- Лог изменений приведён к Keep a Changelog.
- Тело ответа в исключениях, выбрасываемых неудачными запросами, теперь по умолчанию обрезается до 120 символов (ранее было 4000), изменить можно при помощи
GuzzleSenderFactory
.
- В метод
filters()
будет удалён в следующей минорной версии, используйте вместо негоfilter()
.
- Починен метод
Evgeek\Moysklad\Http\ApiClient::getGenerator()
.
- Форматтер
StdClassFormat
может обрабатывать не только объекты, но и массивы объектов.
- Небольшие фиксы документации.
v0.6.0 [Upgrade guide]
- Формат ответа задаётся не через
\Evgeek\Moysklad\Enums\Format::class
, а через имя любого класса-форматтера, реализующего интерфейсEvgeek\Moysklad\Formatters\JsonFormatter
. Как и раньше, библиотека включает в себя три стандартных форматтера:StdClassFormat
(по умолчанию),ArrayFormat
иStringFormat
, но теперь при желании можно реализовать свой собственный. - Билдер запросов инициализируется не напрямую из
\Evgeek\Moysklad\MoySklad::class
, а через методMoySklad::query()
. - Фильтры задаются более просто, без использования
Evgeek\Moysklad\Filter::class
. - Параметры запроса (
->limit()
,->filter()
,->params()
и т.д.), которые ранее требовалось задавать исключительно в конце билдера, теперь корректно работают в любом месте fluent-цепочки. - В качестве значения параметра в
filter()
иparam()
можно передавать не только строку, но иbool|int|float
, переданное значение будет сконвертировано в строку автоматом (123.45
=>'123.45'
,true
=>'true'
).
- Добавлен PHPUnit и базовые тесты.
v0.5.1 [Upgrade guide]
- Переработан метод
Meta::state()
. Ранее он создавал мету только дляcustomerorder
, теперь - для любой переданной сущности.
- Добавлен, настроен и запущен PHP-CS-Fixer.
- Добавлен и настроен PHPStan, поправлены ошибки первого уровня.
- Добавлен
Makefile
с алиасами команд для быстрого запуска.