[POO] Sérialiser un objet PDO dans une classe
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é :
Code:
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());
?> |
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 !
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 :
Citation:
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
La variable en public ne change rien.
Donc, ma question est : comment puis-je passer un objet PDO en le sérialisant ?
Merci à tous,
Fabrice