资讯专栏INFORMATION COLUMN

关于PHP的JsonSerializable

DC_er / 485人阅读

摘要:我们都知道的可以对一个对象进行编码生成字符串,但是我们的程序中对象往往是很复杂的,只是话对象的公共属性,这的确有点力不从心,好在在开始有了一个叫做的接口,它解决了这个痛点,我们来看一看。本文原创发布于微信公众号北哥兄弟连。

我们都知道php的json_encode()可以对一个对象进行编码生成json字符串,但是我们的程序中对象往往是很复杂的,json_encode()只是json话对象的公共属性,这的确有点力不从心,好在在PHP5.4开始有了一个叫做JsonSerializable的接口,它解决了这个痛点,我们来看一看。

什么是JsonSerializable

JsonSerializable是一个接口任何实现了这个接口的类, 需要定义一个jsonSerialize()方法, 这个方法会在对这个类的对象做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));// 输出65

你看到了,此时当json_encode对Man类的对象进行编码时,因为Man类继承了JsonSerializable ,因此不会去管类的公共属性而是调用了jsonSerialize函数,将其结果返回。

为何讲这个

可能你会疑问为何我会说这个,一来现在app、微服务大道其行的今天,json协议重要的不要不要的,了解这个接口对我们操作json益处很大,二来在yii的Json类中也用到了JsonSerializable接口,所以学习这对我们研究yii源代码是很有好处的。


本文原创发布于微信公众号 北哥兄弟连

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/31968.html

相关文章

  • 教程:Laravel 集合(Collection)基础用法

    摘要:方法可以传一个单一值,或一组键值对或者一个回调函数,然后它会返回一个布尔值来告知目标内容是否在集合中。排序方法接受一个键或回调函数参数用于对集合进行排序。获取一个集合中所有数字的和方法通过回调函数传递每个数据项。 showImg(https://segmentfault.com/img/remote/1460000018726031?w=1252&h=640); 文章转自:https:...

    CoderStudy 评论0 收藏0
  • Laravel核心解读 -- Response

    摘要:设置生成对象后就要执行对象的方法了,该方法定义在类中,其主要目的是对进行微调使其能够遵从协议。最后会把完整的响应发送给客户端。本文已经收录在系列文章源码学习里,欢迎访问阅读。 Response 前面两节我们分别讲了Laravel的控制器和Request对象,在讲Request对象的那一节我们看了Request对象是如何被创建出来的以及它支持的方法都定义在哪里,讲控制器时我们详细地描述了...

    TigerChain 评论0 收藏0
  • Laravel 框架 Model 对象转 json 字符串丢失更新

    摘要:虽然在使用过程中应该小心避免和撞上同名属性,但偶尔还是会碰到的,这个还是稍微注意下就好,这并非,而是在当前的程序处理方式下必然会产生的一个正常现象。 场景还原 UserModel class UserModel extends Model { public function role() { return $this->belognsTo(RoleMod...

    paraller 评论0 收藏0
  • php 学习指南及技术干货

    摘要:安全生成安全的随机数,加密数据,扫描漏洞的库一个兼容标准的过滤器一个生成随机数和字符串的库使用生成随机数的库一个安全库一个纯安全通信库一个简单的键值加密存储库一个结构化的安全层一个试验的面向对象的包装库一个扫描文件安全的库 Security 安全 生成安全的随机数,加密数据,扫描漏洞的库 HTML Purifier-一个兼容标准的HTML过滤器 RandomLib-一个生成随机数和字...

    lifefriend_007 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<