Spaces:
No application file
No application file
declare(strict_types=1); | |
namespace Mautic\CoreBundle\Helper\Tree; | |
class IntNode implements NodeInterface | |
{ | |
/** | |
* @var NodeInterface[] | |
*/ | |
private array $children = []; | |
/** | |
* @var array<string,mixed> | |
*/ | |
private array $params = []; | |
private int $position = 0; | |
public function __construct( | |
private int $value, | |
private ?NodeInterface $parent = null | |
) { | |
} | |
public function getValue(): int | |
{ | |
return $this->value; | |
} | |
public function getParent(): ?NodeInterface | |
{ | |
return $this->parent; | |
} | |
public function setParent(NodeInterface $parent): void | |
{ | |
$this->parent = $parent; | |
} | |
public function addChild(NodeInterface $child): void | |
{ | |
$child->setParent($this); | |
$this->children[] = $child; | |
} | |
public function addParam(string $key, $value): void | |
{ | |
$this->params[$key] = $value; | |
} | |
public function getParam(string $key, $default = null) | |
{ | |
return $this->params[$key] ?? $default; | |
} | |
public function getChildrenArray(): array | |
{ | |
return $this->children; | |
} | |
public function getChildren(): NodeInterface | |
{ | |
return $this->current(); | |
} | |
public function hasChildren(): bool | |
{ | |
return !empty($this->current()->getChildrenArray()); | |
} | |
public function current(): NodeInterface | |
{ | |
return $this->children[$this->position]; | |
} | |
public function key(): int | |
{ | |
return $this->position; | |
} | |
public function next(): void | |
{ | |
++$this->position; | |
} | |
public function rewind(): void | |
{ | |
$this->position = 0; | |
} | |
public function valid(): bool | |
{ | |
return isset($this->children[$this->position]); | |
} | |
} | |