Heim >Backend-Entwicklung >PHP-Tutorial >Detaillierte Erklärung der __set_state()-Methode in PHP

Detaillierte Erklärung der __set_state()-Methode in PHP

藏色散人
藏色散人Original
2019-07-25 14:22:444721Durchsuche

__set_state(), diese statische Methode wird aufgerufen, wenn var_export() aufgerufen wird, um eine Klasse zu exportieren.

Funktion:

Seit PHP 5.1.0 wird diese statische Methode automatisch aufgerufen, wenn var_export() aufgerufen wird, um eine Klasse zu exportieren.

Parameter:

Der einzige Parameter dieser Methode ist ein Array, das Klassen enthält, die im Format array('property' => value, ...) angeordnet sind. Eigentum.

Werfen wir zunächst einen Blick auf den Code und die Ausführungsergebnisse, ohne __set_state() hinzuzufügen:

Code oben:

<?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);

Sehen Sie sich die Ergebnisse an:

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

Natürlich werden alle Attribute im Objekt ausgedruckt

Nach dem Hinzufügen von __set_state():

Weiter mit dem Code:

<?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);

Weiterlesen Ergebnis:

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

Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung der __set_state()-Methode in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn