Viewing file: Compiler.php (2.36 KB) -rwxrwxr-x Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
namespace Illuminate\View\Compilers;
use Illuminate\Filesystem\Filesystem; use Illuminate\Support\Str; use InvalidArgumentException;
abstract class Compiler { /** * The filesystem instance. * * @var \Illuminate\Filesystem\Filesystem */ protected $files;
/** * The cache path for the compiled views. * * @var string */ protected $cachePath;
/** * The base path that should be removed from paths before hashing. * * @var string */ protected $basePath;
/** * Create a new compiler instance. * * @param \Illuminate\Filesystem\Filesystem $files * @param string $cachePath * @param string $basePath * @return void * * @throws \InvalidArgumentException */ public function __construct(Filesystem $files, $cachePath, $basePath = '') { if (! $cachePath) { throw new InvalidArgumentException('Please provide a valid cache path.'); }
$this->files = $files; $this->cachePath = $cachePath; $this->basePath = $basePath; }
/** * Get the path to the compiled version of a view. * * @param string $path * @return string */ public function getCompiledPath($path) { return $this->cachePath.'/'.sha1('v2'.Str::after($path, $this->basePath)).'.php'; }
/** * Determine if the view at the given path is expired. * * @param string $path * @return bool */ public function isExpired($path) { $compiled = $this->getCompiledPath($path);
// If the compiled file doesn't exist we will indicate that the view is expired // so that it can be re-compiled. Else, we will verify the last modification // of the views is less than the modification times of the compiled views. if (! $this->files->exists($compiled)) { return true; }
return $this->files->lastModified($path) >= $this->files->lastModified($compiled); }
/** * Create the compiled file directory if necessary. * * @param string $path * @return void */ protected function ensureCompiledDirectoryExists($path) { if (! $this->files->exists(dirname($path))) { $this->files->makeDirectory(dirname($path), 0777, true, true); } } }
|