摘要:我們都知道的可以對一個(gè)對象進(jìn)行編碼生成字符串,但是我們的程序中對象往往是很復(fù)雜的,只是話對象的公共屬性,這的確有點(diǎn)力不從心,好在在開始有了一個(gè)叫做的接口,它解決了這個(gè)痛點(diǎn),我們來看一看。本文原創(chuàng)發(fā)布于微信公眾號北哥兄弟連。
什么是JsonSerializable我們都知道php的json_encode()可以對一個(gè)對象進(jìn)行編碼生成json字符串,但是我們的程序中對象往往是很復(fù)雜的,json_encode()只是json話對象的公共屬性,這的確有點(diǎn)力不從心,好在在PHP5.4開始有了一個(gè)叫做JsonSerializable的接口,它解決了這個(gè)痛點(diǎn),我們來看一看。
JsonSerializable是一個(gè)接口任何實(shí)現(xiàn)了這個(gè)接口的類, 需要定義一個(gè)jsonSerialize()方法, 這個(gè)方法會在對這個(gè)類的對象做Json化的時(shí)候被調(diào)用, 這個(gè)時(shí)候你就可以在這個(gè)方法內(nèi) , 隨意調(diào)整最終的Json化的結(jié)果。
不懂么?來個(gè)例子!
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
你看到了,此時(shí)當(dāng)json_encode對Man類的對象進(jìn)行編碼時(shí),因?yàn)镸an類繼承了JsonSerializable ,因此不會去管類的公共屬性而是調(diào)用了jsonSerialize函數(shù),將其結(jié)果返回。
為何講這個(gè)可能你會疑問為何我會說這個(gè),一來現(xiàn)在app、微服務(wù)大道其行的今天,json協(xié)議重要的不要不要的,了解這個(gè)接口對我們操作json益處很大,二來在yii的Json類中也用到了JsonSerializable接口,所以學(xué)習(xí)這對我們研究yii源代碼是很有好處的。
本文原創(chuàng)發(fā)布于微信公眾號 北哥兄弟連。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/31968.html
摘要:方法可以傳一個(gè)單一值,或一組鍵值對或者一個(gè)回調(diào)函數(shù),然后它會返回一個(gè)布爾值來告知目標(biāo)內(nèi)容是否在集合中。排序方法接受一個(gè)鍵或回調(diào)函數(shù)參數(shù)用于對集合進(jìn)行排序。獲取一個(gè)集合中所有數(shù)字的和方法通過回調(diào)函數(shù)傳遞每個(gè)數(shù)據(jù)項(xiàng)。 showImg(https://segmentfault.com/img/remote/1460000018726031?w=1252&h=640); 文章轉(zhuǎn)自:https:...
摘要:設(shè)置生成對象后就要執(zhí)行對象的方法了,該方法定義在類中,其主要目的是對進(jìn)行微調(diào)使其能夠遵從協(xié)議。最后會把完整的響應(yīng)發(fā)送給客戶端。本文已經(jīng)收錄在系列文章源碼學(xué)習(xí)里,歡迎訪問閱讀。 Response 前面兩節(jié)我們分別講了Laravel的控制器和Request對象,在講Request對象的那一節(jié)我們看了Request對象是如何被創(chuàng)建出來的以及它支持的方法都定義在哪里,講控制器時(shí)我們詳細(xì)地描述了...
摘要:雖然在使用過程中應(yīng)該小心避免和撞上同名屬性,但偶爾還是會碰到的,這個(gè)還是稍微注意下就好,這并非,而是在當(dāng)前的程序處理方式下必然會產(chǎn)生的一個(gè)正常現(xiàn)象。 場景還原 UserModel class UserModel extends Model { public function role() { return $this->belognsTo(RoleMod...
摘要:安全生成安全的隨機(jī)數(shù),加密數(shù)據(jù),掃描漏洞的庫一個(gè)兼容標(biāo)準(zhǔn)的過濾器一個(gè)生成隨機(jī)數(shù)和字符串的庫使用生成隨機(jī)數(shù)的庫一個(gè)安全庫一個(gè)純安全通信庫一個(gè)簡單的鍵值加密存儲庫一個(gè)結(jié)構(gòu)化的安全層一個(gè)試驗(yàn)的面向?qū)ο蟮陌b庫一個(gè)掃描文件安全的庫 Security 安全 生成安全的隨機(jī)數(shù),加密數(shù)據(jù),掃描漏洞的庫 HTML Purifier-一個(gè)兼容標(biāo)準(zhǔn)的HTML過濾器 RandomLib-一個(gè)生成隨機(jī)數(shù)和字...
閱讀 1433·2021-09-22 15:52
閱讀 1472·2019-08-30 15:44
閱讀 902·2019-08-30 14:24
閱讀 2714·2019-08-30 13:06
閱讀 2709·2019-08-26 13:45
閱讀 2790·2019-08-26 13:43
閱讀 1027·2019-08-26 12:01
閱讀 1449·2019-08-26 11:56