Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?PHP
- 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
- {
- public $_____baz = 'foo';
- private $__array = [];
- public function __construct(array $array = array())
- {
- $this->_____baz = 'bar';
- $this->__array = $array;
- }
- }
- Class SerializeClass Extends BaseClass implements \Serializable
- {
- private static $__serializable = ['__array', '__offsets', '__indexes', '__protMode'];
- public $_____baz = 'foo';
- private $__array = [];
- private $__offsets = [];
- private $__indexes = [];
- private $__protMode = 0;
- private $__itIndex = 0;
- public function serialize()
- {
- $result = [];
- foreach(self::$__serializable as $property)
- $result[$property] = $this->$property;
- return serialize($result);
- }
- public function unserialize($serialized)
- {
- $unserialized = unserialize($serialized);
- foreach(self::$__serializable as $field)
- $this->$field = $unserialized[$field];
- return $this;
- }
- public function __construct(array $array = array())
- {
- $this->_____baz = 'bar';
- $this->__array = $array;
- }
- }
- $a = new NonSerializeClass(["The" => "quick", 7 => "fox", "jumps" => "over", "the" => "lazy", "dog" => '.']);
- $b = new SerializeClass(["The" => "quick", 7 => "fox", "jumps" => "over", "the" => "lazy", "dog" => '.']);
- //var_dump($a, $b);
- $_a = serialize($a);
- $_b = serialize($b);
- $__a = unserialize($_a);
- $__b = unserialize($_b);
- var_dump($__a, $__b);
- ?>
- localhost\illiFW\dev\BaseClass::__sleep called
- Array
- (
- [0] => _____baz
- )
- 1
- object(localhost\illiFW\dev\NonSerializeClass)#5 (2) {
- ["_____baz"]=>
- string(3) "bar"
- ["__array":"localhost\illiFW\dev\NonSerializeClass":private]=>
- array(0) {
- }
- }
- object(localhost\illiFW\dev\SerializeClass)#6 (6) {
- ["_____baz"]=>
- string(3) "foo"
- ["__array":"localhost\illiFW\dev\SerializeClass":private]=>
- array(5) {
- ["The"]=>
- string(5) "quick"
- [7]=>
- string(3) "fox"
- ["jumps"]=>
- string(4) "over"
- ["the"]=>
- string(4) "lazy"
- ["dog"]=>
- string(1) "."
- }
- ["__offsets":"localhost\illiFW\dev\SerializeClass":private]=>
- array(0) {
- }
- ["__indexes":"localhost\illiFW\dev\SerializeClass":private]=>
- array(0) {
- }
- ["__protMode":"localhost\illiFW\dev\SerializeClass":private]=>
- int(0)
- ["__itIndex":"localhost\illiFW\dev\SerializeClass":private]=>
- int(0)
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement