定義一個Student類:
1 html' target='_blank'>class Student {2 public $name;3 public $age;4 function __construct($name, $age) {5 $this- name = $name;6 $this- age = $age;8 }
此時new一個對象并直接echo: 1 $person1 = new Student( jack , 20); 2 echo $person1;
結(jié)果并沒有按照我們預(yù)想的那樣打印出該對象而是報了一個致命錯誤:

意為Student類實例化出來的對象不能轉(zhuǎn)化成字符串,此處可以得到一個信息即:echo 后面必須是字符串,
否則會將其自動轉(zhuǎn)化為字符串,那么如何講一個對象轉(zhuǎn)換為一個字符串呢?
先介紹一個魔術(shù)方法:__tostring(),這個方法用于一個類被當(dāng)成字符串時應(yīng)怎樣回應(yīng)。例如 echo $obj;
應(yīng)該顯示些什么。此方法必須返回一個字符串,否則將發(fā)出一條 E_RECOVERABLE_ERROR 級別的致命錯誤。
將這個魔術(shù)方法添加到Student類中:
1 class Student { 2 public $name; 3 public $age; 4 function __construct($name, $age) { 5 $this- name = $name; 6 $this- age = $age; 7 } 8 function __tostring() { 9 return json_encode($this, JSON_FORCE_OBJECT); 10 } 11 }json_encode(value, options)方法可以將一個對象轉(zhuǎn)換為JSON字符串,此方法接受兩個參數(shù),
第一個參數(shù):value
待編碼的 value ,除了resource 類型之外,可以為任何數(shù)據(jù)類型
該函數(shù)只能接受 UTF-8 編碼的數(shù)據(jù)
第二個參數(shù):options
由以下常量組成的二進(jìn)制掩碼: JSON_HEX_QUOT, JSON_HEX_TAG, JSON_HEX_AMP, JSON_HEX_APOS, JSON_NUMERIC_CHECK, JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES, JSON_FORCE_OBJECT, JSON_UNESCAPED_UNICODE.
返回值:編碼成功則返回一個以 JSON 形式表示的 string 或者在失敗時返回 FALSE 。
note:與json_encode方法相對的有json_decode方法,此方法可以將一個JSON格式的字符串轉(zhuǎn)化為PHP變量,此方法接受兩個參數(shù)
第一個參數(shù):json字符串
第二個參數(shù):true/false,為true時表示將字符串準(zhǔn)換位數(shù)組,為false時則表示轉(zhuǎn)換為對象,默認(rèn)為false
返回值:對象或數(shù)組(第二個參數(shù)為為true時)
此時在瀏覽器打開可以看到轉(zhuǎn)換成功:

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,更多相關(guān)內(nèi)容請關(guān)注PHP !
相關(guān)推薦:
php redis服務(wù)編譯安裝的方法
php源碼建庫建表-配置文件-錯誤日志的方法
以上就是對象轉(zhuǎn)換成JSON字符串的詳細(xì)內(nèi)容,PHP教程
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。
|
新聞熱點
疑難解答