PHPの__set_state()メソッドの詳しい説明

藏色散人
リリース: 2023-04-07 06:46:02
オリジナル
4716 人が閲覧しました

__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 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
php
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート