cache = $cache; $this->files = $files; } /** * Execute the console command. * * @return void */ public function handle() { $this->laravel['events']->fire( 'cache:clearing', [$this->argument('store'), $this->tags()] ); $this->cache()->flush(); $this->flushFacades(); $this->laravel['events']->fire( 'cache:cleared', [$this->argument('store'), $this->tags()] ); $this->info('Application cache cleared!'); } /** * Flush the real-time facades stored in the cache directory. * * @return void */ public function flushFacades() { if (! $this->files->exists($storagePath = storage_path('framework/cache'))) { return; } foreach ($this->files->files($storagePath) as $file) { if (preg_match('/facade-.*\.php$/', $file)) { $this->files->delete($file); } } } /** * Get the cache instance for the command. * * @return \Illuminate\Cache\Repository */ protected function cache() { $cache = $this->cache->store($this->argument('store')); return empty($this->tags()) ? $cache : $cache->tags($this->tags()); } /** * Get the tags passed to the command. * * @return array */ protected function tags() { return array_filter(explode(',', $this->option('tags'))); } /** * Get the console command arguments. * * @return array */ protected function getArguments() { return [ ['store', InputArgument::OPTIONAL, 'The name of the store you would like to clear.'], ]; } /** * Get the console command options. * * @return array */ protected function getOptions() { return [ ['tags', null, InputOption::VALUE_OPTIONAL, 'The cache tags you would like to clear.', null], ]; } }