serialize() et unserialize()

Eléphant du PHP | 226 Messages

07 févr. 2012, 01:58

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?
Djun, L'inoubliable et l'incontournable

ViPHP
ViPHP | 2287 Messages

07 févr. 2012, 02:22

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).
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Eléphant du PHP | 226 Messages

07 févr. 2012, 22:24

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.
Djun, L'inoubliable et l'incontournable

ViPHP
ViPHP | 2287 Messages

08 févr. 2012, 01:23

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;
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Eléphant du PHP | 226 Messages

13 févr. 2012, 00:22

Tu pourrais m'envoyer un tutorial qui explique les file_contents?
Djun, L'inoubliable et l'incontournable

ViPHP
ViPHP | 2287 Messages

13 févr. 2012, 00:33

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.
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Eléphant du PHP | 226 Messages

13 févr. 2012, 00:43

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
Djun, L'inoubliable et l'incontournable

ViPHP
ViPHP | 2287 Messages

13 févr. 2012, 01:32

<?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;
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Eléphant du PHP | 226 Messages

13 févr. 2012, 22:58

Merci
Djun, L'inoubliable et l'incontournable

Eléphant du PHP | 226 Messages

14 févr. 2012, 00:52

Je ne comprends pas le deuxième argument dans le file_put_contents()
Djun, L'inoubliable et l'incontournable

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

14 févr. 2012, 01:03

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 :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

14 févr. 2012, 09:51

Il en faut peu pour être heureux ......

Eléphant du PHP | 226 Messages

15 févr. 2012, 00:07

file_put_contents enregistre tes données pour l'envoyer au file_get_contents
Djun, L'inoubliable et l'incontournable

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

15 févr. 2012, 07:36

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).

@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 226 Messages

15 févr. 2012, 23:53

Je suis mélanger explique moi file_put_contents et file_get_contents. Soyez précis
Djun, L'inoubliable et l'incontournable