php對象轉換成字符串

比如我有一個類A:

class A
{
    public $a;
    public $b;
    public $c;

    public function __construct($a, $b, $c)
    {
        $this->a = $a;
        $this->b = $b;
        $this->c = $c;
    }


}

如果我直接輸出:

$a = new A(1,2.2,'3.3');

echo $a;

會報一個致命錯誤(fatal error)提示說對象不發轉換成字符串,PHP的對象時分不出是聲明還是賦值的,假如我不知道$a是對象呢,而把他當做字符串輸出了怎麼辦?有沒有可以容錯的機制嗎?有,php中的魔術方法--__toString()。

舉例來說,我在對象A中假如如下代碼:

public function __toString(){
        return '對象不能當做字符串輸出';
    }

這樣直接輸出的時候,就會輸出這串字符串,或者你可以在__toString()方法中拋異常,手動提示錯誤都是可以的,但是避免了因爲不知道是不是對象類型,而導致的致命錯誤。

大家都知道PHP中,對象是無法直接轉換成字符串的,我們是否可以通過__toString()方法操作下什麼嗎?我把__toString()方法稍微改一改:

public function __toString(){
        return json_encode($this);
    }

好消息是__toString()方法,可以直接通過類調用,然後我們通過這樣就可以得到了:

$a = new A(1,2.2,'3.3');

echo $a->__toString();

看看運行結果,我們就得到了,json_encode()化的對象了:


當然,你也可以序列化成字符串,都是可以的

發佈了58 篇原創文章 · 獲贊 54 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章