Page 1 sur 3

serialize() et unserialize()

Posté : 07 févr. 2012, 01:58
par djun
Je suis aller lire lire serialize(). J'ai rien compris, une variable ne pas perdre sa valeur et son type. Donner moi un exemple ou serialize() sera utile?

Re: serialize() et unserialize()

Posté : 07 févr. 2012, 02:22
par Calimero
Je suis aller lire lire serialize(). J'ai rien compris, une variable ne pas perdre sa valeur et son type. Donner moi un exemple ou serialize() sera utile?
C'est pas tellement serialize que tu n'as pas compris, c'est php (et c'est nécessaire pour comprendre à quoi servent serialize/unserialize).

Une page web php ne "vit" pas très longtemps : Entre le moment où elle est éxécutée, et le moment où elle est terminée, dans la plupart des cas il s'écoulera moins d'une seconde (souvent beaucoup moins que ça). Tout juste le temps de fabriquer du HTML et de l'envoyer au client.

Tu vas avoir bientôt besoin d'enregistrer des données qui doivent durer plus longtemps (que tu vas consulter par exemple dans un autre script qui sera éxécuté plus tard). Pour cela tu vas t'appuyer sur un média de stockage de données, des fichiers ou une base de données. Ça ira très bien pour des données simples - des chiffres, des chaînes de caractères, des dates... Mais pour stocker une variable php contenant des données complexes (tableaux, objets) là tu vas avoir besoin de ces fonctions si tu veux retrouver "simplement" ta variable à l'arrivée.

Ces fonctions marchent un peu comme une éponge : quand tu veux ranger une éponge dans un coin, tu la laisses sécher et elle devient petite et stockable (serialize). Il suffit de la mouiller pour qu'elle retrouve sa forme et ses propriétés d'origine, comme elle était au départ (unserialize).

Re: serialize() et unserialize()

Posté : 07 févr. 2012, 22:24
par djun
Je suis aller lire lire serialize(). J'ai rien compris, une variable ne pas perdre sa valeur et son type. Donner moi un exemple ou serialize() sera utile?
C'est pas tellement serialize que tu n'as pas compris, c'est php (et c'est nécessaire pour comprendre à quoi servent serialize/unserialize).

Une page web php ne "vit" pas très longtemps : Entre le moment où elle est éxécutée, et le moment où elle est terminée, dans la plupart des cas il s'écoulera moins d'une seconde (souvent beaucoup moins que ça). Tout juste le temps de fabriquer du HTML et de l'envoyer au client.

Tu vas avoir bientôt besoin d'enregistrer des données qui doivent durer plus longtemps (que tu vas consulter par exemple dans un autre script qui sera éxécuté plus tard). Pour cela tu vas t'appuyer sur un média de stockage de données, des fichiers ou une base de données. Ça ira très bien pour des données simples - des chiffres, des chaînes de caractères, des dates... Mais pour stocker une variable php contenant des données complexes (tableaux, objets) là tu vas avoir besoin de ces fonctions si tu veux retrouver "simplement" ta variable à l'arrivée.

Ces fonctions marchent un peu comme une éponge : quand tu veux ranger une éponge dans un coin, tu la laisses sécher et elle devient petite et stockable (serialize). Il suffit de la mouiller pour qu'elle retrouve sa forme et ses propriétés d'origine, comme elle était au départ (unserialize).
Mais si je fais:

$variable = 'allo' ;

echo $variable ;

Je n'ai pas perdu mes donner.

Re: serialize() et unserialize()

Posté : 08 févr. 2012, 01:23
par Calimero
Mais si je fais:

$variable = 'allo' ;

echo $variable ;

Je n'ai pas perdu mes donner.
Oui parceque tu le fais en un seul script.
<?php 
// début du script
$variable = 'allo' ;

echo $variable ;
// fin du script : après cette ligne la page est terminée, et les variables sont définitivement détruites.
Imaginons que tu aies un deuxième script différent (une deuxième page, en fait) où tu as aussi besoin d'utiliser $variable pour l'afficher.
<?php 
// début du script
echo $variable ;
// fin du script 
Quand tu consultes cette deuxième page, PHP t'enverra une erreur car pour lui, dans cette page, la variable $variable ne contient aucune donnée.

Ce qu'il manquerait pour que ça marche, c'est une façon pour le deuxième script de récupérer la valeur et de la stocker dans $variable. Il y a plusieurs façons de le faire, et serialize/unserialize ne seraient pas le meilleur choix pour cet exemple (puisque la donnée est une chaîne simple, voir mon explication plus haut). Mais ce serait possible, voici un petit exemple qui fonctionne (file_get_contents et file_put_contents sont des fonctions simples pour lire et écrire depuis un fichier) :
<?php // page1.php (stockage)
$variable = 'coucou';
file_put_contents('variable.txt',serialize($variable));
echo $variable.' est maintenant stockée dans variable.txt';
<?php // page2.php (récupération)
$variable = unserialize(file_get_contents('variable.txt'));
echo 'récupération de données depuis le fichier variable.txt : '.$variable;

Re: serialize() et unserialize()

Posté : 13 févr. 2012, 00:22
par djun
Tu pourrais m'envoyer un tutorial qui explique les file_contents?

Re: serialize() et unserialize()

Posté : 13 févr. 2012, 00:33
par Calimero
Tu pourrais m'envoyer un tutorial qui explique les file_contents?
file_get_contents() lit le contenu d'un fichier, file_put_contents() écrit. Y'a vraiment rien d'autre à expliquer, mais si tu as besoin de + d'infos :

- 1/ Tu cliques sur le nom des fonctions en rouge dans les codes sources de mon dernier commentaire.
- 2/ Par la magie du web, tu te retrouves sur la page de manuel php correspondant au nom de la fonction cliquée, truffée d'exemples et d'explications.

Re: serialize() et unserialize()

Posté : 13 févr. 2012, 00:43
par djun
Tu pourrais m'envoyer un tutorial qui explique les file_contents?
file_get_contents() lit le contenu d'un fichier, file_put_contents() écrit. Y'a vraiment rien d'autre à expliquer, mais si tu as besoin de + d'infos :

- 1/ Tu cliques sur le nom des fonctions en rouge dans les codes sources de mon dernier commentaire.
- 2/ Par la magie du web, tu te retrouves sur la page de manuel php correspondant au nom de la fonction cliquée, truffée d'exemples et d'explications.
Je ne comprends pas leur explication.
vous pouvez me donner juste une syntaxe et une exemple simple pour les 2 fonctions

Re: serialize() et unserialize()

Posté : 13 févr. 2012, 01:32
par Calimero
<?php // Stockage dans un fichier
$fichier = 'recette_gateau_citron.txt';

$recette = "Ingrédients : 2 yaourts, un peu de farine, 1 oeuf, du jus de citron
- On mélange tout
- On coule dans un moule à gateau
- On met tout au four pendant 1h.
- On va faire un sudoku";

file_put_contents($fichier, $recette);
<?php // Lecture depuis un fichier
$fichier = 'recette_gateau_citron.txt';

$recette = file_get_contents($fichier);

echo $recette;

Re: serialize() et unserialize()

Posté : 13 févr. 2012, 22:58
par djun
Merci

Re: serialize() et unserialize()

Posté : 14 févr. 2012, 00:52
par djun
Je ne comprends pas le deuxième argument dans le file_put_contents()

Re: serialize() et unserialize()

Posté : 14 févr. 2012, 01:03
par Ryle
Tu es en train d'écrire un fichier... il te faut donc deux informations :
- le nom (et chemin) du fichier
- le contenu du fichier

Le 2e argument c'est donc ce que tu veux envoyer dans ton fichier :)

Re: serialize() et unserialize()

Posté : 14 févr. 2012, 09:51
par moogli

Re: serialize() et unserialize()

Posté : 15 févr. 2012, 00:07
par djun
file_put_contents enregistre tes données pour l'envoyer au file_get_contents

Re: serialize() et unserialize()

Posté : 15 févr. 2012, 07:36
par moogli
Ouch #-o

C'est vraiment il s'agit simplement de deux actions complémentaires mais totalement dissociable.

Le lien n'est la que pour t'indique que beaucoup de tes questions ont réponse dans la doc (dispo en plusieurs langues au besoin).

@+

Re: serialize() et unserialize()

Posté : 15 févr. 2012, 23:53
par djun
Je suis mélanger explique moi file_put_contents et file_get_contents. Soyez précis