Page 1 sur 1

Serialize() Objet

Posté : 01 mars 2010, 21:53
par ferv21
Bonsoir,
J'essaye de faire passer mon objet dans une autre page. Pour cela j'ai vu qu'il fallait utiliser les fonctions serialize et unserialize.
J'ai fait un petit test, mais c'est un échec :D

Voici ma class User.class.php
<?php
class User{
	private $nom;
	private $prenom;
	
public function __construct ($name,$surname) {
		$this->nom=$name;
		$this->prenom=$surname;
	}	
	public function getUser(){
		echo $this->nom;
		echo '</br>';
		echo $this->prenom;		
     }
}
?>
index_test.php
<?php
include("./user.class.php");
$name='Thomas';
$surname='Leclerc';

$client=new User($name,$surname);
$client_chaine=serialize($client);

?>
Et mon index_test_serial.php
<?php
include("./user.class.php");
$client_bis=unserialize($client_chaine);
$client_bis->getUser();
?>
J'ai ce message d'erreur:
Notice: Undefined variable: chaine in D:\Programme\wamp\www\test\index_test_serial.php on line 3
Fatal error: Call to a member function getUser() on a non-object in D:\Programme\wamp\www\test\index_test_serial.php on line 4

Vous pouvez m'aider S'il vous plait?
Cordialement
PS: petite rectification de code...

Re: Serialize() Objet

Posté : 01 mars 2010, 22:28
par jojolapine
Hop,
je n'ai pas regardé dans le détail, mais si tu es sous php5, regarde par ici: http://www.siteduzero.com/tutoriel-3-14 ... #ss_part_3

Re: Serialize() Objet

Posté : 02 mars 2010, 00:40
par ferv21
Oui Merci pour ce lien, mais j'aimerais plus rectifier mon code.
Cordialement

Re: Serialize() Objet

Posté : 02 mars 2010, 11:57
par Yosh
Oui Merci pour ce lien, mais j'aimerais plus rectifier mon code.
Cordialement
Comment veux-tu récupérer $client_chaine dans ta seconde page si tu ne l'enregistre pas quelque part.

Utilise une session

Re: Serialize() Objet

Posté : 02 mars 2010, 23:54
par ferv21
Bonjour, merci de m'avoir répondu.
J'ai fait ceci:
<?php
class User{
	private $nom;
	private $prenom;
	
	public function __construct ($name,$surname) {
		$this->nom=$name;
		$this->prenom=$surname;
	}	
	public function getUser(){
		echo $this->nom;
		echo '</br>';
		echo $this->prenom;	
	}
}
?>
dans index1.php
<?php
include("./user.class.php");
$name='Thomas';
$surname='Leclerc';

$client=new User($name,$surname);
$chaine=serialize($client);
session_start();
$_SESSION['test']=$chaine;
?>
dans index2.php
<?php
include("./user.class.php");
session_start();
if (isSet($_SESSION['test'])){
$yu=$_SESSION['test'];
    $ob=unserialize($yu);
	$ob=new User();
 }
else {
	return 0;
} 
J'avais fait un print_r($ob), donc ca ma bien converti: User Object ( [nom:User:private] => Thomas [prenom:User:private] => Leclerc )
Mais lorsque je lance le script tel qu'il est, j'ai ce message:
Warning: Missing argument 1 for User::__construct(), called in D:\Programme\wamp\www\test\index_test_serial.php on line 13 and defined in D:\Programme\wamp\www\test\user.class.php on line 6

Warning: Missing argument 2 for User::__construct(), called in D:\Programme\wamp\www\test\index_test_serial.php on line 13 and defined in D:\Programme\wamp\www\test\user.class.php on line 6

Notice: Undefined variable: name in D:\Programme\wamp\www\test\user.class.php on line 7

Notice: Undefined variable: surname in D:\Programme\wamp\www\test\user.class.php on line 8

Re: Serialize() Objet

Posté : 03 mars 2010, 13:55
par ferv21
Okay j'ai torouvé la solution.
Merci

Re: Serialize() Objet

Posté : 03 mars 2010, 14:02
par Yosh
Okay j'ai torouvé la solution.
Merci
Tu peux poster ta réponse pour les prochaines personnes essayant de faire la même chose.

Et n'oublie le bouton "résolut"

Re: Serialize() Objet

Posté : 03 mars 2010, 19:36
par ferv21
Oui alors il fallait simplement faire ceci:
$ob->getUser();
étant de donnée que $ob c'est notre objet si je ne raconte pas de bêtise?
Cordialement