<?php
class Role implements \Serializable
{
protected $id = 0;
protected $b = null;
public function __construct($id)
{
$this->id = $id;
}
public function serialize()
{
return serialize([$this->id, $this->b]);
}
public function unserialize($serialized)
{
list($this->id, $this->b) = unserialize($serialized);
}
}
class AbstractToken implements \Serializable
{
public $role1;
public $role2;
public function __construct($role)
{
$this->role1 = $role;
$this->role2 = $role;
}
public function serialize()
{
return serialize([$this->role1, $this->role2]);
}
public function unserialize($serialized)
{
list($this->role1, $this->role2) = unserialize($serialized);
}
}
class Token extends AbstractToken {
public $id;
public function __construct($id, $role)
{
$this->id = $id;
parent::__construct($role);
}
public function serialize()
{
return serialize([$this->id, parent::serialize()]);
}
public function unserialize($serialized)
{
list($this->id, $parentStr) = unserialize($serialized);
parent::unserialize($parentStr);
}
}
$token = new Token(1, new Role(1));
$s = serialize($token);
$broken = unserialize($s);
var_dump($token->role2);
var_dump($broken->role2);
exit;
Deprecated: Role implements the Serializable interface, which is deprecated. Implement __serialize() and __unserialize() instead (or in addition, if support for old PHP versions is necessary) in /in/gMDup on line 2
Deprecated: AbstractToken implements the Serializable interface, which is deprecated. Implement __serialize() and __unserialize() instead (or in addition, if support for old PHP versions is necessary) in /in/gMDup on line 23
Deprecated: Token implements the Serializable interface, which is deprecated. Implement __serialize() and __unserialize() instead (or in addition, if support for old PHP versions is necessary) in /in/gMDup on line 44
Warning: unserialize(): Error at offset 53 of 54 bytes in /in/gMDup on line 40
object(Role)#2 (2) {
["id":protected]=>
int(1)
["b":protected]=>
NULL
}
NULL
Output for 8.1.0 - 8.1.28, 8.2.0 - 8.2.18
Deprecated: Role implements the Serializable interface, which is deprecated. Implement __serialize() and __unserialize() instead (or in addition, if support for old PHP versions is necessary) in /in/gMDup on line 2
Deprecated: AbstractToken implements the Serializable interface, which is deprecated. Implement __serialize() and __unserialize() instead (or in addition, if support for old PHP versions is necessary) in /in/gMDup on line 23
Deprecated: Token implements the Serializable interface, which is deprecated. Implement __serialize() and __unserialize() instead (or in addition, if support for old PHP versions is necessary) in /in/gMDup on line 44
Notice: unserialize(): Error at offset 53 of 54 bytes in /in/gMDup on line 40
object(Role)#2 (2) {
["id":protected]=>
int(1)
["b":protected]=>
NULL
}
NULL
Notice: unserialize(): Error at offset 53 of 54 bytes in /in/gMDup on line 40
object(Role)#2 (2) {
["id":protected]=>
int(1)
["b":protected]=>
NULL
}
NULL
Parse error: syntax error, unexpected '[', expecting ')' in /in/gMDup on line 14
Process exited with code 255.
Output for 5.1.0 - 5.1.6, 5.2.0 - 5.2.17
Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /in/gMDup on line 2
Parse error: syntax error, unexpected '[', expecting ')' in /in/gMDup on line 14
Process exited with code 255.
Output for 5.0.0 - 5.0.5
Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /in/gMDup on line 2
Parse error: parse error, unexpected '[', expecting ')' in /in/gMDup on line 14
Process exited with code 255.
Output for 4.4.2 - 4.4.9
Parse error: syntax error, unexpected T_STRING, expecting '{' in /in/gMDup on line 2
Process exited with code 255.