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 :)), если в целом есть согласие, что вариант с исключением логически верен, но при этом хочется наиболее осторожно относиться к обратной совместимости.