namespace Illuminate\View\Engines;
use Exception;
use ErrorException;
use Illuminate\View\Compilers\CompilerInterface;
// namespace
class 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.
共同学习,写下你的评论
评论加载中...
作者其他优质文章