Serialize() Objet

Eléphant du PHP | 89 Messages

01 mars 2010, 21:53

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...
Modifié en dernier par ferv21 le 02 mars 2010, 00:38, modifié 1 fois.

ViPHP
ViPHP | 3607 Messages

01 mars 2010, 22:28

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

Eléphant du PHP | 89 Messages

02 mars 2010, 00:40

Oui Merci pour ce lien, mais j'aimerais plus rectifier mon code.
Cordialement

Mammouth du PHP | 568 Messages

02 mars 2010, 11:57

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

Eléphant du PHP | 89 Messages

02 mars 2010, 23:54

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

Eléphant du PHP | 89 Messages

03 mars 2010, 13:55

Okay j'ai torouvé la solution.
Merci

Mammouth du PHP | 568 Messages

03 mars 2010, 14:02

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"

Eléphant du PHP | 89 Messages

03 mars 2010, 19:36

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