Как бросить исключение, если определенный объект класса сериализован через json_encode?Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Как бросить исключение, если определенный объект класса сериализован через json_encode?

Сообщение Anonymous »

Из -за рефакторинга у меня есть вариант использования, чтобы бросить logicexception, если и только если, определенное экземпляр класса сериализуется через json_encode . (В настоящее время много сериализации происходит молча под капотом, генерируя сломанные/пустые структуры данных, однако код работает нормально, так как ошибка не бросается. Я предпочитаю исключения, чтобы действительно поймать все места.)
Например: < /p>
class ValueObject
{
public function __construct(public string $someProperty)
{
}
}
$an_object = new ValueObject('example');
$result = json_encode($an_object, JSON_PRETTY_PRINT); // this should throw as an instance of ValueObject is passed
echo $result;
< /code>
Это также должно работать, если экземпляры кажутся вложенными, например, в массиве, но также как часть свойств другого объекта: < /p>
$nested_array = [
[
'foo',
new ValueObject('foo'),
new ValueObject('GNARF'),
],
'gnarf' => new ValueObject('poit'),
];
$nested_result = json_encode($nested_array, JSON_PRETTY_PRINT); // should fail too
echo $nested_result;


Подробнее здесь: https://stackoverflow.com/questions/794 ... json-encod
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»