Ответ: нет, писать не нужно, потому что во всех библиотеках давно есть обертки, где все это уже написано. В RFC предлагается начать с малого и не ломать совместимость, для начала сделали так, затем будет изменено поведение по умолчанию:
Future Scope
As mentioned earlier, it may be desirable to deprecate the default behaviour eventually.
Во всех современных фреймворках есть возможности для сериализации через обертки (например Symfony или Laravel) для безфреймворкового использования подойдет GuzzleHttp::json_decode() или любой другой свой вариант с обработкой на невалидность json.
/**
* Wrapper for json_decode that throws when an error occurs.
*
* @param string $json JSON data to parse
* @param bool $assoc When true, returned objects will be converted
* into associative arrays.
* @param int $depth User specified recursion depth.
* @param int $options Bitmask of JSON decode options.
*
* @return mixed
* @throws \InvalidArgumentException if the JSON cannot be decoded.
* @link http://www.php.net/manual/en/function.json-decode.php
*/
function json_decode($json, $assoc = false, $depth = 512, $options = 0)
{
$data = \json_decode($json, $assoc, $depth, $options);
if (JSON_ERROR_NONE !== json_last_error()) {
throw new \InvalidArgumentException(
'json_decode error: ' . json_last_error_msg()
);
}
return $data;
}
В целом да, но в частности — внешних зависимостей, кроме dev, пока ещё нет, а при работе с монорепозиторием зависимость всегда последняя (для внутренних репозиторий).
Вот пример из оф. документации
Example #1 Anonymous function example
Который превращается в:
Либо это какой-то троллинг, либо я чего-то не понимаю. В языке была проблема, ее стали решать на уровне языка (а не костылей). В чем неправильность?
Все понятно. Вы недовольны тем, что нужно будет писать чуть более длинную функцию с доп. параметрами:
Ответ: нет, писать не нужно, потому что во всех библиотеках давно есть обертки, где все это уже написано. В RFC предлагается начать с малого и не ломать совместимость, для начала сделали так, затем будет изменено поведение по умолчанию:
Во всех современных фреймворках есть возможности для сериализации через обертки (например Symfony или Laravel) для безфреймворкового использования подойдет
GuzzleHttp::json_decode()
или любой другой свой вариант с обработкой на невалидность json.Это не означает, что нужно именно так писать. Я, например, использую
обертку над json_decode()
из guzzle:В 7.3 будет тоже самое, только теперь в самом PHP
предрассудкиособенности.Судя по дате статьи я уже года на 4 впереди
array
, полифил скорее для тестов и подсветки в IDE предназначен