作用:
自 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()方法詳解的詳細內容,更多請關注TW511.COM其它相關文章!