内容简介:昨天funlake提醒了我, 应该把一些PHP的新动向传播一下.恭喜候鸟加入了pdt,有什么新进展别忘了给咱cn phper通报一下呀。那么, 今天为大家介绍一下5.4中对Json做的一个改进.
昨天funlake提醒了我, 应该把一些 PHP 的新动向传播一下.
恭喜候鸟加入了pdt,有什么新进展别忘了给咱cn phper通报一下呀。
那么, 今天为大家介绍一下5.4中对Json做的一个改进.
Json是Ajax应用中最为通用的数据传输格式(协议), 主流的编程语言都带有对Json的支持, 在PHP中, 有json_encode/json_decode, 可以很方便的构造Json数据格式.
- echo json_encode ( array ( 1 , 2 , 3 , 4 ));
- ?>
- //[1,2,3,4]
也可以Json化一个对象:
- $o = new stdclass ;
- $o -> a = 42 ;
- echo json_encode ( $o );
- ?>
- //{"a":42}
但这样就有个问题, 现实生活中的对象是很复杂的, Json的这种默认只对属性做操作的做法有的时候是不能解决问题的, 比如我们希望通过私有成员来做一些计算得到最后的Json化数据, 又或者我们希望用一个字符串来代替一个object.
在以前, 那你只能自己拼凑Json串了. 不过感谢Sara, 在5.4中, Json新增了一个JsonSerializable接口, 任何实现了这个接口的类, 需要定义一个jsonSerialize()方法, 这个方法会在对这个类的对象做Json化的时候被调用, 这个时候你就可以在这个方法内 , 随意调整最终的Json化的结果:
- class JsonTest 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 JsonTest ( 23 , 42 ));
- ?>
- //65
下面是个稍微复杂点的例子:
- $data = array (
- new stdClass ();
- new JsonTest ( 1 , 2 ),
- new JsonTest ( 3 , 4 ),
- array ( 5 , 6 )
- );
- echo json_encode ( $data );
- ?>
- //[{},3,7,[5,6]]
最后提醒一下, PHP 5.4还处于开发阶段, 在最终release之前, 这些特性都可能被调整或者更改. 如果大家有任何建议, 也欢迎反馈, 帮助我们使得PHP变得更好.
谢谢
PS: 这个特性最初由Johannes在他自己的blog中介绍: http://schlueters.de/blog/archives/135-Jason,-let-me-help-you!.html
觉得文章有用?立即:和朋友一起 共学习 共进步!
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 接口测试及常用接口测试工具
- Java中的Comparable接口和Comparator接口
- Java 的 Closeable 接口和 Cloneable 接口
- python接口自动化测试之接口数据依赖
- Kotlin 接口与 Java8 新特性接口
- Java接口全链路优化:如何降低接口RT时长
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Single Page Web Applications
Michael Mikowski、Josh Powell / Manning Publications / 2013-9-30 / USD 44.99
Code for most web sites mostly runs on the server. When a user clicks on a link, the site reacts slowly because the browser sends information to the server and the server sends it back again before di......一起来看看 《Single Page Web Applications》 这本书的介绍吧!