__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='男') { $this->name = $name; $this->age = $age; $this->sex = $sex; } } $person = new Person('小明'); // 初始赋值 var_export($person);
看結果:
Person::__set_state(array( 'sex' => '男', 'name' => '小明', 'age' => 25, ))
很明顯,將物件中的屬性都印出來了
加了__set_state() 之後:
#繼續上程式碼:
<?php class Person { public $sex; public $name; public $age; public function __construct($name="", $age=25, $sex='男') { $this->name = $name; $this->age = $age; $this->sex = $sex; } public static function __set_state($an_array) { $a = new Person(); $a->name = $an_array['name']; return $a; } } $person = new Person('小明'); // 初始赋值 $person->name = '小红'; var_export($person);
繼續看結果:
Person::__set_state(array( 'sex' => '男', 'name' => '小红', 'age' => 25, ))
以上是PHP中 __set_state()方法詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!