Вход Регистрация
Файл: vendor/laravel/framework/src/Illuminate/Cache/Console/ClearCommand.php
Строк: 139
<?php

namespace IlluminateCacheConsole;

use 
IlluminateCacheCacheManager;
use 
IlluminateConsoleCommand;
use 
IlluminateFilesystemFilesystem;
use 
SymfonyComponentConsoleAttributeAsCommand;
use 
SymfonyComponentConsoleInputInputArgument;
use 
SymfonyComponentConsoleInputInputOption;

#[AsCommand(name: 'cache:clear')]
class ClearCommand extends Command
{
    
/**
     * The console command name.
     *
     * @var string
     */
    
protected $name 'cache:clear';

    
/**
     * The name of the console command.
     *
     * This name is used to identify the command during lazy loading.
     *
     * @var string|null
     *
     * @deprecated
     */
    
protected static $defaultName 'cache:clear';

    
/**
     * The console command description.
     *
     * @var string
     */
    
protected $description 'Flush the application cache';

    
/**
     * The cache manager instance.
     *
     * @var IlluminateCacheCacheManager
     */
    
protected $cache;

    
/**
     * The filesystem instance.
     *
     * @var IlluminateFilesystemFilesystem
     */
    
protected $files;

    
/**
     * Create a new cache clear command instance.
     *
     * @param  IlluminateCacheCacheManager  $cache
     * @param  IlluminateFilesystemFilesystem  $files
     * @return void
     */
    
public function __construct(CacheManager $cacheFilesystem $files)
    {
        
parent::__construct();

        
$this->cache $cache;
        
$this->files $files;
    }

    
/**
     * Execute the console command.
     *
     * @return void
     */
    
public function handle()
    {
        
$this->laravel['events']->dispatch(
            
'cache:clearing', [$this->argument('store'), $this->tags()]
        );

        
$successful $this->cache()->flush();

        
$this->flushFacades();

        if (! 
$successful) {
            return 
$this->components->error('Failed to clear cache. Make sure you have the appropriate permissions.');
        }

        
$this->laravel['events']->dispatch(
            
'cache:cleared', [$this->argument('store'), $this->tags()]
        );

        
$this->components->info('Application cache cleared successfully.');
    }

    
/**
     * 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 IlluminateCacheRepository
     */
    
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'nullInputOption::VALUE_OPTIONAL'The cache tags you would like to clear'null],
        ];
    }
}
Онлайн: 0
Реклама