bonjour à tous,
Bon, j'ai un soucis avec la serialisation d 'objet avec php5. J'ai lu pas mal de docs là-dessus sans réponse...appropriée.
Voici la classe simplifié :Ce code marche nickel même si je met en commentaire la ligne :$objTestSerialized = new test_serialize(); alors que, normalement, je devrais la mettre dans le code... deja, je comprends pas !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51 <?php session_start(); class test_serialize { private $nom; public $prenom; private $objConnex; function __construct($typeConn="mysql") { //$this->objConnex = new PDO($typeConn.':host=localhost;dbname=bdd','root',''); } function getNom() { echo $this->nom ; } function SetNom($leNom) { $this->nom = $leNom; } function getProduct() { return array ("premier", "dernier"); } function __sleep() { return array_keys(get_object_vars($this)); } } $objTest = new test_serialize(); $objTest->prenom = "Fabrice"; $objTest->SetNom("Dupont "); $objTest->getNom(); echo " " .$objTest->prenom ."<br><br>"; var_dump($objTest->getProduct()); // ///////////////////////////////////////////////////////////////// // echo "<br><br>Objet Serialisé : "; $_SESSION['obj'] = serialize($objTest); $objTestSerialized = new test_serialize(); $objTestSerialized = unserialize($_SESSION['obj']); $objTestSerialized->getNom(); echo " " .$objTestSerialized->prenom ; echo "<br><br>"; var_dump($objTestSerialized->getProduct()); ?>
Ensuite, si j'enlève le commentaire de : //$this->objConnex = new PDO($typeConn.':host=localhost;dbname=bdd','root',''); dans le constructeur, j'ai cette erreur :La variable en public ne change rien.Uncaught exception 'PDOException' with message 'You cannot serialize or unserialize PDO instances' in G:\www\tests_scripts\test_serialize.php:42 Stack trace: #0 G:\www\tests_scripts\test_serialize.php(42): PDO->__sleep() #1 {main} thrown in G:\www\tests_scripts\test_serialize.php on line 42
Donc, ma question est : comment puis-je passer un objet PDO en le sérialisant ?
Merci à tous,
Fabrice
Partager