首頁 >後端開發 >php教程 >PHP中 __set_state()方法詳解

PHP中 __set_state()方法詳解

藏色散人
藏色散人原創
2019-07-25 14:22:444743瀏覽

 __set_state(),呼叫var_export()導出類別時,此靜態方法會被呼叫。

作用:

自 PHP 5.1.0 起,當呼叫 var_export() 匯出類別時,此靜態方法會自動呼叫。

參數:

本方法的唯一參數是一個數組,其中包含按array('property' => value, ...) 格式排列的類屬性。

下面我們先來看看在沒有加上__set_state() 情況按下,程式碼及執行結果如何:

上程式碼:

<?php
class Person
{
    public $sex;
    public $name;
    public $age;
    public function __construct($name="",  $age=25, $sex=&#39;男&#39;)
    {
        $this->name = $name;
        $this->age  = $age;
        $this->sex  = $sex;
    }
}
$person = new Person(&#39;小明&#39;); // 初始赋值
var_export($person);

看結果:

Person::__set_state(array( &#39;sex&#39; => &#39;男&#39;, &#39;name&#39; => &#39;小明&#39;, &#39;age&#39; => 25, ))

很明顯,將物件中的屬性都印出來了

加了__set_state() 之後:

#繼續上程式碼:

<?php
class Person
{
    public $sex;
    public $name;
    public $age;
    public function __construct($name="",  $age=25, $sex=&#39;男&#39;)
    {
        $this->name = $name;
        $this->age  = $age;
        $this->sex  = $sex;
    }
    public static function __set_state($an_array)
    {
        $a = new Person();
        $a->name = $an_array[&#39;name&#39;];
        return $a;
    }
}
$person = new Person(&#39;小明&#39;); // 初始赋值
$person->name = &#39;小红&#39;;
var_export($person);

繼續看結果:

Person::__set_state(array( &#39;sex&#39; => &#39;男&#39;, &#39;name&#39; => &#39;小红&#39;, &#39;age&#39; => 25, ))

以上是PHP中 __set_state()方法詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn