Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

serialize et unserialize

1 réponse
Avatar
guy
Bonjour,

Voici mon probleme :
J'ai une classe qui s'initialise avec des valeurs, sur mon ordi en
local. Une fois initialisée, je sérialize l'objet, le sauvegarde, le
transmet sur un serveur par FTP, le déserialize tout cela avec succès,
le problème est que je ne parviens pas à initialiser l'objet désérializé
dans une variable et donc je ne peux pas l'utiliser, mais je peux
l'afficher. Par contre si je fais tout en local cela fonctionne.

Pouvez vous m'indiquer comment récupérer une classe avec serialize et
unserialize sur deux ordi différents ?

Merci d'avance

class.inc (existe en local et sur le serveur)
<?
Class a {
var $var1;
var $var2;
function a() {
$var1 = recupereValeur(1); //valeurs prises dans une BD
$var2 = recupereValeur(2); //ca chez moi ca marche bien
}

function affiche() {
echo $var1."-".$var2;
}

}
?>

page1.php (en local)
<?
include("class
$obj = new a();
$str = serialize($this);

$fp = fopen($this->"fichier.php", "w");
fputs($fp, $str);
fclose($fp);

// j'envoie sur le serveur le fichier.php
?>

page2.php (sur le serveur)
<?
include("class.inc");
$fp = fopen("fichier.php", "r");
$str = fread ($handle, filesize ("database.php"));
// jusqu'ici ca marche

$s = implode("", @file("database.php"));
unserialize($s);
// a l'affichage je constate que je récupère bien les données de l'objet
// mais comment mettre tout çà dans une variable pour l'utiliser :
// par exemple en faisant $obj->affiche()
?>

1 réponse

Avatar
Etienne SOBOLE
Voici mon probleme :
J'ai une classe qui s'initialise avec des valeurs, sur mon ordi en local.
Une fois initialisée, je sérialize l'objet, le sauvegarde, le transmet sur
un serveur par FTP, le déserialize tout cela avec succès, le problème est
que je ne parviens pas à initialiser l'objet désérializé dans une variable
et donc je ne peux pas l'utiliser, mais je peux l'afficher. Par contre si
je fais tout en local cela fonctionne.


ce qu'il te manque c'est la définition de l'objet.
la serialization ne gère que les données de ton objet.

sur ton serveur source tu as la classe définit quelques part...
il te la faut aussi sur le serveur destination.

ou alors tu la cast en StdClass (j'ai jamains essayé ceci dit) et si
t'arrive a faire ca de l'autre coté ca marchera nickel, sauf que tu n'aura
pas les méthode de ta classe evidement.

Ai je été clair?
Etienne