Spaces:
No application file
No application file
File size: 1,809 Bytes
d2897cd |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
<?php
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]);
}
}
|