$children */ public function __construct( private string $name, Translatable|string|null $description = null, private array $children = [] ){ $this->description = $description ?? ""; //TODO: wtf ???? $this->recalculatePermissibles(); } public function getName() : string{ return $this->name; } /** * @return bool[] * @phpstan-return array */ public function getChildren() : array{ return $this->children; } public function getDescription() : Translatable|string{ return $this->description; } public function setDescription(Translatable|string $value) : void{ $this->description = $value; } /** * @return PermissibleInternal[] */ public function getPermissibles() : array{ return PermissionManager::getInstance()->getPermissionSubscriptions($this->name); } public function recalculatePermissibles() : void{ $perms = $this->getPermissibles(); foreach($perms as $p){ $p->recalculatePermissions(); } } public function addChild(string $name, bool $value) : void{ $this->children[$name] = $value; $this->recalculatePermissibles(); } public function removeChild(string $name) : void{ unset($this->children[$name]); $this->recalculatePermissibles(); } }