Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ABSTRACT CLASS BaseClass
- {
- public function __sleep()
- {
- print __METHOD__.' called'."\n";
- $defaults = get_class_vars(get_class($this));
- $present = get_object_vars($this);
- $result = [];
- foreach($present as $key => $value)
- if(!is_resource($value)
- && (is_object($value) || is_array($value) || $defaults[$key] !== $value))
- $result[] = $key;
- print print_r($result)."\n\n";
- return $result;
- }
- }
- Class NonSerializeClass Extends BaseClass
- {
- private $___NonSerializeClass = 'NaN';
- public $pubNonSerializeClass = 'NaN';
- public function __construct(array $array = [])
- {
- $this->pubNonSerializeClass = 'my NonSerializeClass Public';
- $this->___NonSerializeClass = 'my NonSerializeClass Private';
- }
- }
- Class SerializeClass Extends BaseClass implements \Serializable
- {
- private static $__serializable = ['___SerializeClass'];
- private $___SerializeClass = 'NaN';
- public $pubSerializeClass = 'NaN';
- public function serialize()
- {
- $public = parent::__sleep();
- foreach($public as $property)
- $result[$property] = $this->$property;
- foreach(self::$__serializable as $property)
- $result[$property] = $this->$property;
- return serialize($result);
- }
- public function unserialize($serialized)
- {
- $unserialized = unserialize($serialized);
- foreach($unserialized as $field => $value)
- $this->$field = $unserialized[$field];
- return $unserialized;
- }
- public function __construct(array $array = [])
- {
- $this->pubSerializeClass = 'my SerializeClass Public';
- $this->___SerializeClass = 'my SerializeClass Private';
- }
- }
- Class SerializeChildClass Extends SerializeClass
- {
- private static $__serializable = ['___SerializeChildClass'];
- private $___SerializeChildClass = 'NaN';
- public $pubSerializeChildClass = 'NaN';
- public function __construct(array $array = [])
- {
- $this->pubSerializeChildClass = 'my childClass Public';
- $this->___SerializeChildClass = 'my childClass Private';
- parent::__construct($array);
- }
- public function serialize()
- {
- $result['parent'] = parent::serialize();
- foreach(self::$__serializable as $property)
- $result[$property] = $this->$property;
- return serialize($result);
- }
- public function unserialize($serialized)
- {
- $unserialized = unserialize($serialized);
- parent::unserialize($unserialized['parent']);
- unset($unserialized['parent']);
- foreach(self::$__serializable as $field)
- $this->$field = $unserialized[$field];
- return $this;
- }
- }
- Class SerializeChildChildClass Extends SerializeChildClass
- {
- private static $__serializable = ['___SerializeChildChildClass'];
- private $___SerializeChildChildClass = 'NaN';
- public $pubSerializeChildChildClass = 'NaN';
- public function __construct(array $array = [])
- {
- $this->pubSerializeChildChildClass = 'my childChildClass Public';
- $this->___SerializeChildChildClass = 'my childChildClass Private';
- parent::__construct($array);
- }
- public function serialize()
- {
- $result['parent'] = parent::serialize();
- foreach(self::$__serializable as $property)
- $result[$property] = $this->$property;
- return serialize($result);
- }
- public function unserialize($serialized)
- {
- $unserialized = unserialize($serialized);
- parent::unserialize($unserialized['parent']);
- unset($unserialized['parent']);
- foreach(self::$__serializable as $field)
- $this->$field = $unserialized[$field];
- return $this;
- }
- }
- $a = new NonSerializeClass(["The" => "quick", 7 => "fox", "jumps" => "over", "the" => "lazy", "dog" => '.']);
- $b = new SerializeClass(["The" => "quick", 7 => "fox", "jumps" => "over", "the" => "lazy", "dog" => '.']);
- $c = new SerializeChildChildClass(["The" => "quick", 7 => "fox", "jumps" => "over", "the" => "lazy", "dog" => '.']);
- //var_dump($a, $b);
- $_a = serialize($a);
- //$_b = serialize($b);
- $_c = serialize($c);
- $__a = unserialize($_a);
- //$__b = unserialize($_b);
- $__c = unserialize($_c);
- var_dump($__a, $__c);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement