note 119701 added to class.serializable

From: Date: Fri, 05 Aug 2016 08:56:38 +0000
Subject: note 119701 added to class.serializable
Groups: php.notes 
Request: Send a blank email to php-notes+get-206218@lists.php.net to get a copy of this message
My solution that let you serialize inherited objects. Without specify what need to be serialized. We want to get rid of PDO object in this example. abstract class DefaultModel() implements \Serializable { /** * @var PDO */ private $pdo; /** * Serialize object * * @return string */ public function serialize() { $serializable = get_object_vars($this); // unset property name that hold PDO instance unset($serializable['pdo']); return serialize($serializable); } /** * Unserialize object * * @param string $serialized Serialized object * @return DefaultModel */ public function unserialize($serialized) { $unserialized = unserialize($serialized); // recreate PDO object $this->pdo = $this->createDBObject(); if(is_array($unserialized) === true) { foreach($unserialized as $property => $value) { $this->{$property} = $value; } } } } class RealModel extends DefaultModel { private $myVar; public function setMyVar($value) { $this->myVar = $value; } } $model = new RealModel(); $model->setMyVar('123456'); $serialized = serialize($model); $serialized = $model->serialize(); // will also work print_r($serialized); $unserialized = unserialize($serialized); print_r($unserialized); Hope this help. ---- Server IP: 208.69.120.55 Probable Submitter: 109.176.111.226 ---- Manual Page -- http://php.net/manual/en/class.serializable.php Edit -- https://master.php.net/note/edit/119701 Del: integrated -- https://master.php.net/note/delete/119701/integrated Del: useless -- https://master.php.net/note/delete/119701/useless Del: bad code -- https://master.php.net/note/delete/119701/bad+code Del: spam -- https://master.php.net/note/delete/119701/spam Del: non-english -- https://master.php.net/note/delete/119701/non-english Del: in docs -- https://master.php.net/note/delete/119701/in+docs Del: other reasons-- https://master.php.net/note/delete/119701 Reject -- https://master.php.net/note/reject/119701 Search -- https://master.php.net/manage/user-notes.php

« previous php.notes (#206218) next »