Explication détaillée de la méthode __set_state() en PHP

藏色散人
Libérer: 2023-04-07 06:46:02
original
4716 Les gens l'ont consulté

__set_state(), cette méthode statique sera appelée lors de l'appel de var_export() pour exporter une classe.

Fonction :

Depuis PHP 5.1.0, cette méthode statique sera automatiquement appelée lorsque var_export() est appelée pour exporter une classe.

Paramètres :

Le seul paramètre de cette méthode est un tableau contenant des classes disposées au format array('property' => value, ...) propriété.

Jetons d'abord un coup d'œil au code et aux résultats d'exécution sans ajouter __set_state() :

Code ci-dessus :

<?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);
Copier après la connexion

Regardez les résultats :

Person::__set_state(array( &#39;sex&#39; => &#39;男&#39;, &#39;name&#39; => &#39;小明&#39;, &#39;age&#39; => 25, ))
Copier après la connexion

Évidemment, tous les attributs de l'objet sont imprimés

Après avoir ajouté __set_state() :

Continuez avec le 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);
Copier après la connexion

Continuez la lecture Résultat :

Person::__set_state(array( &#39;sex&#39; => &#39;男&#39;, &#39;name&#39; => &#39;小红&#39;, &#39;age&#39; => 25, ))
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
php
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal