Maison >développement back-end >tutoriel php >Tutoriel sur la façon de sérialiser des objets sérialisés en PHP

Tutoriel sur la façon de sérialiser des objets sérialisés en PHP

巴扎黑
巴扎黑original
2017-08-09 14:39:062307parcourir

Stockage et transmission d'objets

Dans les applications de projet réelles, certaines tâches ne peuvent pas être réalisées en une ou deux pages puisque les variables sont libérées après l'exécution du script, ce que nous avons généré sur cette page. L'objet a rencontré des problèmes en essayant de l'utiliser sur d'autres pages.

Si nous devons transmettre l'objet et ses méthodes à la page où nous voulons utiliser l'objet, un moyen plus simple et plus réalisable consiste à sérialiser l'objet et à le stocker ou à le transférer directement vers la page où il est nécessaire. Une autre façon consiste à enregistrer en tant que variable de session.

Tutoriel sur la façon de sérialiser des objets sérialisés en PHPObjet sérialisé

La sérialisation d'objet consiste à convertir l'objet en un flux d'octets pouvant être stocké. Lorsque nous devons transmettre un objet sur le réseau ou écrire l'objet dans un fichier ou une base de données, nous devons sérialiser l'objet.

Le processus complet de sérialisation comprend deux étapes : l'une est la sérialisation, qui consiste à convertir l'objet en une chaîne binaire. La fonction serialize() est utilisée pour sérialiser un objet ; convertir l'objet en chaîne binaire. L'objet est sérialisé en chaîne binaire puis converti en objet La fonction unserialize() est utilisée pour désérialiser un objet sérialisé. De cette façon, après l’ensemble du processus, la structure du type et les données de l’objet sont complètes.

Syntaxe :

string serialize( mixed value )
mixed unserialize( string str [, string callback] )

Exemple :

name = $name;
        $this->age = $age;
    }

    function say() {
	echo "我的名字叫:".$this->name."
";
	echo " 我的年龄是:".$this->age;
    }
}

$p1 = new Person("张三", 20);
$p1_string = serialize($p1);

//将对象序列化后写入文件
$fh = fopen("p1.text", "w");
fwrite($fh, $p1_string);
fclose($fh);
?>

Ouvrez le fichier p1.text et le contenu qui y est écrit est le suivant :

O:6:"Person":2:{s:12:" Person name";s:4:"张三";s:11:" Person age";i:20;}

Mais généralement les caractères générés par la sérialisation ci-dessus ne sont pas directement analysés.

Désérialisation :

name = $name;
        $this->age = $age;
    }

    function say() {
	echo "我的名字叫:".$this->name."
";
	echo " 我的年龄是:".$this->age;
    }
}

$p2 = unserialize(file_get_contents("p1.text"));
$p2 -> say();
?>

En exécutant l'exemple, sortie :

我的名字叫:张三
我的年龄是:20
Invite
  1. En raison de la sérialisation, les objets ne peuvent pas sérialiser leurs méthodes, donc lors de la désérialisation, le fichier actuel doit contenir la classe correspondante ou nécessiter le fichier de classe correspondant.

  2. La sérialisation ne peut être utilisée qu'avec des utilisateurs limités, car les fichiers doivent être stockés ou écrits séparément pour chaque utilisateur, et le nom du fichier ne doit pas être répété. Dans le cas où l'utilisateur ne peut pas quitter normalement le navigateur, il n'y a aucune garantie que le fichier sera supprimé.

    Tutoriel sur la façon de sérialiser des objets sérialisés en PHPL'objet est enregistré en tant que variable de session

    Lorsqu'il y a un grand nombre d'utilisateurs, vous pouvez envisager d'utiliser la session pour enregistrer l'objet. Pour plus d'informations sur les sessions, consultez « Session PHP ».

    Exemple :

    name = $name;
            $this->age = $age;
        }
    
        function say() {
    	echo "我的名字叫:".$this->name."
    ";
    	echo " 我的年龄是:".$this->age;
        }
    }
    
    $_SESSION["p1"] = new Person("张三", 20);
    ?>

    Session de lecture :

    name = $name;
            $this->age = $age;
        }
    
        function say() {
    	echo "我的名字叫:".$this->name."
    ";
    	echo " 我的年龄是:".$this->age;
        }
    }
    
    $_SESSION["p1"] -> say();
    ?>

    Exécutez cet exemple, sortie :

    我的名字叫:张三
    我的年龄是:20

    Identique à la sérialisation, lorsque le L'objet enregistré est une variable de session, sa méthode ne peut pas être sauvegardée, donc lors de la lecture de la variable de session, le fichier courant doit contenir la classe correspondante ou le fichier classe correspondant à require.

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!

Déclaration:
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