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