Мы все знаем, что json _encode() PHP может кодировать объект для генерации строки JSON, но объект в нашей программе часто очень сложный. json_encode () – это только общее свойство объекта JSON, которое действительно немного слабое. К счастью, в PHP 5.4 появился интерфейс под названием Json Сериализуемый, который решил проблему. Давайте взглянем.
Сериализуемый Json-это класс интерфейса, реализующий этот интерфейс. Вам нужно определить метод сериализации json (). Этот метод будет вызван при познании объекта этого класса. В это время вы можете по желанию настроить конечный результат озонирования этим методом.
Неужели ты не понимаешь? Давайте возьмем пример!
class Man implements JsonSerializable { private $a, $b; public function __construct($a, $b) { $this->a = $a; $this->b = $b; } public function jsonSerialize() { return $this->a + $this->b; } } Echo json_encode (new Man (23, 42);//output 65
Как вы можете видеть, когда json_encode кодирует объект основного класса, поскольку Основной класс наследует JsonSerializable, он не заботится об открытых свойствах класса, а вызывает функцию JsonSerialize и возвращает ее результаты.
Может быть, вы удивитесь, почему я это сказал. Во-первых, протокол JSON важен и не нужен в современных приложениях и микросервисах. Понимание этого интерфейса очень полезно для нас при работе с json. Во-вторых, интерфейс JsonSerializable также используется в классе Json yii. Поэтому нам очень полезно изучить исходный код Yii.
Эта статья была первоначально опубликована на общедоступном номере Wechat Компания North Brothers 。