json_encode类时丢失私有属性和受保护属性处理方法

Posted 钧一

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了json_encode类时丢失私有属性和受保护属性处理方法相关的知识,希望对你有一定的参考价值。

<?php
header("Content-Type: text/html;charset=utf-8");

class a implements JsonSerializable{

    public $b1 = 1;
    private $b2 = 2;
    protected $b3 = 3;

    // 实现的抽象类方法,指定需要被序列化JSON的数据
    public function jsonSerialize() {
        $data = [];
        foreach ($this as $key=>$val){
           $data[$key] = $val;
        }
        return $data;
    }
}

$json = json_encode(new a);
echo $json;

 

官网文档地址: https://php.net/manual/en/class.jsonserializable.php

<?php
header("Content-Type: text/html;charset=utf-8");

class a implements JsonSerializable{

public $b1 = 1;
private $b2 = 2;
protected $b3 = 3;

// 实现的抽象方法,指定需要被序列化JSON
public function jsonSerialize() {
$data = [];
foreach ($this as $key=>$val){
$data[$key] = $val;
}
return $data;
}
}

$json = json_encode(new a);
echo $json;

以上是关于json_encode类时丢失私有属性和受保护属性处理方法的主要内容,如果未能解决你的问题,请参考以下文章

子类真的继承私有成员变量吗?

使用 void_t 和受保护的嵌套类的基于 SFINAE 的检测

面向对象编程中啥是公共的、私有的和受保护的?

关于何时使用私有域和受保护域的困惑

私有继承、公有继承和受保护继承之间的区别

私有继承、公有继承和受保护继承之间的区别