namespace Illuminate\View\Engines;use Exception;use ErrorException;use Illuminate\View\Compilers\CompilerInterface;// namespaceclass CompilerEngine extends PhpEngine{// class CompilerEngine extends PhpEngine /** * The Blade compiler instance. * * @var \Illuminate\View\Compilers\CompilerInterface */ protected $compiler;// The Blade compiler instance /** * A stack of the last compiled templates. * * @var array */ protected $lastCompiled = [];// a stack of the last compiled templates /** * Create a new Blade view engine instance. * * @param \Illuminate\View\Compilers\CompilerInterface $compiler * @return void */ public function __construct(CompilerInterface $compiler) { $this->compiler = $compiler;// must be set or right }//Create a new blade view engine instance /** * Get the evaluated contents of the view. * * @param string $path * @param array $data * @return string */ public function get($path, array $data = []) {// evaluated contents of the view. $this->lastCompiled[] = $path;// this path be set // If this given view has expired, which means it has simply been edited since // it was last compiled, we will re-compile the views so we can evaluate a // fresh copy of the view. We'll pass the compiler the path of the view. if ($this->compiler->isExpired($path)) { $this->compiler->compile($path); }// If this given view has expired, which means it has simply been edited since // it was last compiled, we will re-compile the views so we can evaluate a // fresh copy of the view. we'll pass the compiler the path of the view. $compiled = $this->compiler->getCompiledPath($path);//get compiled Path // Once we have the path to the compiled file, we will evaluate the paths with // typical PHP just like any other templates. We also keep a stack of views // which have been rendered for right exception messages to be generated. $results = $this->evaluatePath($compiled, $data); // Once we have the path to the compiled file, we will evaluate the paths with // typical PHP just like any other templates. we also keep a stack of views //which have been rendered for right exception messages to be generated array_pop($this->lastCompiled); return $results; }// get the results.