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

namespace IlluminateFoundationConsole;

use 
IlluminateConsoleCommand;
use 
IlluminateSupportCollection;
use 
SymfonyComponentConsoleAttributeAsCommand;
use 
SymfonyComponentConsoleOutputOutputInterface;
use 
SymfonyComponentFinderFinder;
use 
SymfonyComponentFinderSplFileInfo;

#[AsCommand(name: 'view:cache')]
class ViewCacheCommand extends Command
{
    
/**
     * The name and signature of the console command.
     *
     * @var string
     */
    
protected $signature 'view:cache';

    
/**
     * The console command description.
     *
     * @var string
     */
    
protected $description "Compile all of the application's Blade templates";

    
/**
     * Execute the console command.
     *
     * @return mixed
     */
    
public function handle()
    {
        
$this->callSilent('view:clear');

        
$this->paths()->each(function ($path) {
            
$prefix $this->output->isVeryVerbose() ? '<fg=yellow;options=bold>DIR</> ' '';

            
$this->components->task($prefix.$pathnullOutputInterface::VERBOSITY_VERBOSE);

            
$this->compileViews($this->bladeFilesIn([$path]));
        });

        
$this->newLine();

        
$this->components->info('Blade templates cached successfully.');
    }

    
/**
     * Compile the given view files.
     *
     * @param  IlluminateSupportCollection  $views
     * @return void
     */
    
protected function compileViews(Collection $views)
    {
        
$compiler $this->laravel['view']->getEngineResolver()->resolve('blade')->getCompiler();

        
$views->map(function (SplFileInfo $file) use ($compiler) {
            
$this->components->task('    '.$file->getRelativePathname(), nullOutputInterface::VERBOSITY_VERY_VERBOSE);

            
$compiler->compile($file->getRealPath());
        });

        if (
$this->output->isVeryVerbose()) {
            
$this->newLine();
        }
    }

    
/**
     * Get the Blade files in the given path.
     *
     * @param  array  $paths
     * @return IlluminateSupportCollection
     */
    
protected function bladeFilesIn(array $paths)
    {
        
$extensions collect($this->laravel['view']->getExtensions())
            ->
filter(fn ($value) => $value === 'blade')
            ->
keys()
            ->
map(fn ($extension) => "*.{$extension}")
            ->
all();

        return 
collect(
            
Finder::create()
                ->
in($paths)
                ->
exclude('vendor')
                ->
name($extensions)
                ->
files()
        );
    }

    
/**
     * Get all of the possible view paths.
     *
     * @return IlluminateSupportCollection
     */
    
protected function paths()
    {
        
$finder $this->laravel['view']->getFinder();

        return 
collect($finder->getPaths())->merge(
            
collect($finder->getHints())->flatten()
        );
    }
}
Онлайн: 0
Реклама