<?php
class Acl implements \Serializable
{
private $id;
private $objectIdentity;
public function __construct($id, $objectIdentity)
{
$this->id = $id;
$this->objectIdentity = $objectIdentity;
}
public function serialize()
{
return serialize([$this->id, $this->objectIdentity]);
}
public function unserialize($string)
{
list ($this->id, $this->objectIdentity) = unserialize($string);
}
}
class Entry implements \Serializable
{
private $id;
private $acl;
private $sid;
public function __construct($id, $acl, $sid)
{
$this->id = $id;
$this->acl = $acl;
$this->sid = $sid;
}
public function getSid()
{
return $this->sid;
}
public function serialize()
{
return serialize([$this->id, $this->sid]);
}
public function unserialize($string)
{
list ($this->id, $this->sid) = unserialize($string);
}
}
class FieldEntry extends Entry implements \Serializable {
private $field;
public function __construct($id, $acl, $field, $sid)
{
parent::__construct($id, $acl, $sid);
$this->field = $field;
}
public function serialize()
{
return serialize([$this->field, parent::serialize()]);
}
public function unserialize($string)
{
list($this->field, $parentStr) = unserialize($string);
parent::unserialize($parentStr);
}
}
final class Role {
private $role;
public function __construct($name)
{
$this->role = $name;
}
public function getRole() {
return $this->role;
}
public function __toString()
{
return sprintf('RoleSecurityIdentity(%s)', $this->role);
}
}
$acl = new Acl(1, null);
$acl = new Acl(2, null);
$sid = new Role('test');
$a = new FieldEntry(1, $acl, 'name', $sid, 'blabla');
$a1 = new FieldEntry(2, $acl, 'age', $sid, 'blabla');
$s = serialize(
array( // Acl:serialize (line 260)
[ // classFieldAces
'fieldOne' => [$a],
'fieldTwo' => [$a1],
]
)
);
var_dump($s);
$uns = unserialize($s);
var_dump($uns[0]['fieldOne'][0]->getSid(), $uns[0]['fieldTwo'][0]->getSid());
preferences:
63.71 ms | 402 KiB | 5 Q