Open
Conversation
Owner
|
Вариант с исключением действительно логически верен и следовало бы так и реализовать. Однако менять мажорную версию я планирую только после значительного рефакторинга кода. PR пока что оставлю открытым, после рефакторинга - приму. Спасибо за помощь! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Существует проблема. Если в процессе запроса через curl происходит ошибка соединения, например, timeout (проблема была до моего PR #18 :)), то метод
NovaPoshtaApi2::requestвозвращаетnullв ответ. Как минимум, проблема в том, что ты не можешь понять, в чем же конкретно ошибка в этом случае.В коммите я решил эту проблему бросанием исключения с текстом и кодом ошибки, но была одна дилемма с флагом
NovaPoshtaApi2::$throwErrors. Если брать во внимание этот флаг, то есть какая-то логика в том, что если он равенtrue, то нужно выбрасывать исключение, а еслиfalse, то необходимо возвращать искусственно созданный ответ (будто он от НП) в виде:Сначала я так и сделал, но потом подумалось, что проблема с соединением - это все же исключительная ситуация, и нужно просто выбрасывать исключение, а флаг
NovaPoshtaApi2::$throwErrorsскорее про преобразование в исключения штатных ошибок от НП, получаемых в условии корректного ответа сервера.С моим итоговым решением есть одна потенциальная проблемка с обратной совместимостью. Поведение многих функций частично меняется. Если раньше кто-то ориентировался на то, что в случае ошибки будет возвращен
null, то теперь такого не должно будет происходить (по крайней мере с curl). Будет возвращен массив со структурированным и корректным ответом от НП или же выброшено исключение. Как вариант, можно было бы решить это через SemVer (за столько лет уже можно стать версией 1.0.0 :)), если в целом есть согласие, что вариант с исключением логически верен, но при этом хочется наиболее осторожно относиться к обратной совместимости.