name => callback */ private array $cache_cleaners; /** * @param array $cleaners */ public function __construct( Logger $logger, array $cleaners = array() ) { $this->logger = $logger; $this->cache_cleaners = $cleaners; } /** * @param array $cleaner */ public function add_cleaners( array $cleaner ): void { foreach ( $cleaner as $name => $callback ) { $this->cache_cleaners[ $name ] = $callback; } } public function flush_caches(): void { $clean_results = array_map( fn( $cleaner ) => $cleaner(), $this->cache_cleaners ); $this->logger->info( 'Flushed caches', $clean_results ); } }