/
githubmirror
/
framework
Обзор
Документация
Войти
/
githubmirror
/
framework
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
13.x
src/Illuminate/Cache/Console/ClearCommand.php
171 строка
4 KB
Lucas Michot
[13.x] Consolidate Artisan command $name/getArguments()/getOptions() into $signature (#60926)
30 июл 2026, 23:53
Не верифицирован
30 июл 2026, 23:53
08bb3da
Код
Авторство
О чём код?
<?php namespace Illuminate\Cache\Console; use BadMethodCallException; use Illuminate\Cache\CacheManager; use Illuminate\Console\Command; use Illuminate\Console\Prohibitable; use Illuminate\Filesystem\Filesystem; use Symfony\Component\Console\Attribute\AsCommand; #[AsCommand(name: 'cache:clear')] class ClearCommand extends Command { use Prohibitable; /** * The name and signature of the console command. * * @var string */ protected $signature = 'cache:clear {store? : The name of the store you would like to clear} {--tags= : The cache tags you would like to clear} {--locks : Only clear cache locks}'; /** * 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 */ public function __construct(CacheManager $cache, Filesystem $files) { parent::__construct(); $this->cache = $cache; $this->files = $files; } /** * Execute the console command. * * @return int */ public function handle() { if ($this->isProhibited()) { return self::FAILURE; } if ($this->option('locks')) { return $this->clearLocks(); } $this->laravel['events']->dispatch( 'cache:clearing', [$this->argument('store'), $this->tags()] ); $successful = $this->cache()->flush(); $this->flushFacades(); if (! $successful) { $this->components->error('Failed to clear cache. Make sure you have the appropriate permissions.'); return self::FAILURE; } $this->laravel['events']->dispatch( 'cache:cleared', [$this->argument('store'), $this->tags()] ); $this->components->info('Application cache cleared successfully.'); return self::SUCCESS; } /** * Clear all locks from the cache store. * * @return int */ protected function clearLocks() { if (! empty($this->tags())) { $this->components->error('Cache tags cannot be used when clearing locks.'); return self::FAILURE; } try { $successful = $this->cache()->flushLocks(); } catch (BadMethodCallException) { $this->components->error('This cache store does not support clearing locks.'); return self::FAILURE; } if (! $successful) { $this->components->error('Failed to clear cache locks. Make sure you have the appropriate permissions.'); return self::FAILURE; } $this->components->info('Application cache locks cleared successfully.'); return self::SUCCESS; } /** * 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') ?? '')); } }