> */ private ?array $cacheAll = null; public function __construct( private RolePermissionRepository $repository, private CacheInterface $cache ) { } public function saveRolePermission(RolePermission $permission): void { $this->repository->saveRolePermission($permission); $this->cache->delete('permissions'); } public function findRolePermission(Role $role, string $permission): ?RolePermission { return $this->repository->findRolePermission($role, $permission); } /** * @return array> */ public function getPermissions(): array { if ($this->cacheAll === null) { $this->cacheAll = $this->cache->get('permissions', function (ItemInterface $item) { $item->expiresAfter(86400); // one day return $this->repository->getAllAsArray(); }); } return $this->cacheAll; } }