name = $name; } /** * @param string $permission * @return bool */ public function check(string $permission): bool { foreach ($this->children as $child) { if ($child->check($permission)) return true; } return false; } /** * @return string */ public function getName(): string { return $this->name; } /** * @param PermissionComponentInterface $component * @return void */ public function add(PermissionComponentInterface $component): void { $this->children[] = $component; } /** * @param PermissionComponentInterface $component * @return void */ public function remove(PermissionComponentInterface $component): void { $this->children = array_filter($this->children, function ($c) use ($component) { return $c === $component; }); } }