<?php
class Item
{
public ?array $children = [];
public ?Item $parent = null;
public function addChild(Item $item): Item
{
$item->setParent($this);
$this->children[] = $item;
return $this;
}
public function setParent(Item $parent): void
{
$this->parent = $parent;
}
public function __sleep()
{
return array_keys(get_object_vars($this));
}
}
class Tree
{
public array $items = [];
public function addItem(Item $item): self
{
$this->items[] = $item;
return $this;
}
public function __clone()
{
foreach ($this->items as $key => $item) {
$clone = clone $item;
$this->items[$key] = $clone;
}
}
}
class Forest
{
public Tree $first;
public Tree $second;
public function __construct(Tree $first, Tree $second)
{
$this->first = $first;
$this->second = $second;
}
}
$charge = new Item();
$baseProduct = new Item();
$base = new Tree();
$base->addItem($baseProduct);
$baseProduct->addCHild($charge);
$second = clone $base;
$data = new Forest($second, $base);
assert(is_array($data->second->items[0]->children));
$data = unserialize(serialize($data));
assert(is_array($data->second->items[0]->children));
echo 'OK';
Fatal error: Uncaught AssertionError: assert(is_array($data->second->items[0]->children)) in /in/2m3Jb:76
Stack trace:
#0 /in/2m3Jb(76): assert(false, 'assert(is_array...')
#1 {main}
thrown in /in/2m3Jb on line 76
Process exited with code 255.
Output for 7.4.2 - 7.4.33
Warning: assert(): assert(is_array($data->second->items[0]->children)) failed in /in/2m3Jb on line 76
OK
Parse error: syntax error, unexpected '?', expecting T_VARIABLE in /in/2m3Jb on line 5
Process exited with code 255.
Output for 5.0.0 - 5.0.5
Parse error: parse error, unexpected '?', expecting T_VARIABLE in /in/2m3Jb on line 5
Process exited with code 255.
Output for 4.4.2 - 4.4.9
Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /in/2m3Jb on line 5
Process exited with code 255.
Parse error: parse error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /in/2m3Jb on line 5
Process exited with code 255.
Output for 4.3.2 - 4.3.4
Parse error: parse error, expecting `T_OLD_FUNCTION' or `T_FUNCTION' or `T_VAR' or `'}'' in /in/2m3Jb on line 5
Process exited with code 255.