123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 |
- <?php
-
- namespace Illuminate\Cache\Console;
-
- use Illuminate\Console\Command;
- use Illuminate\Cache\CacheManager;
- use Illuminate\Filesystem\Filesystem;
- use Symfony\Component\Console\Input\InputOption;
- use Symfony\Component\Console\Input\InputArgument;
-
- class ClearCommand extends Command
- {
- /**
- * The console command name.
- *
- * @var string
- */
- protected $name = 'cache:clear';
-
- /**
- * The console command description.
- *
- * @var string
- */
- protected $description = 'Flush the application cache';
-
- /**
- * The cache manager instance.
- *
- * @var \Illuminate\Cache\CacheManager
- */
- protected $cache;
-
- /**
- * The filesystem instance.
- *
- * @var \Illuminate\Filesystem\Filesystem
- */
- protected $files;
-
- /**
- * Create a new cache clear command instance.
- *
- * @param \Illuminate\Cache\CacheManager $cache
- * @param \Illuminate\Filesystem\Filesystem $files
- * @return void
- */
- public function __construct(CacheManager $cache, Filesystem $files)
- {
- parent::__construct();
-
- $this->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],
- ];
- }
- }
|