<?php namespace Illuminate\View\Engines; use Exception; use Throwable; use Symfony\Component\Debug\Exception\FatalThrowableError; class PhpEngine implements EngineInterface {// PhpEngine implements EngineInterface /** * Get the evaluated contents of the view. * * @param string $path * @param array $data * @return string */ public function get($path, array $data = []) { return $this->evaluatePath($path, $data); }// get the evaluated contents of the view. // evaluate Path /** * Get the evaluated contents of the view at the given path. * * @param string $__path * @param array $__data * @return string */ protected function evaluatePath($__path, $__data) {// Get the evaluated contents of the view at the given path $obLevel = ob_get_level();// get this ob level ob_start();// start ob extract($__data, EXTR_SKIP);// get this data // We'll evaluate the contents of the view inside a try/catch block so we can // flush out any stray output that might get out before an error occurs or // an exception is thrown. This prevents any partial views from leaking. try { include $__path;// try get this file } catch (Exception $e) { $this->handleViewException($e, $obLevel);// handle } catch (Throwable $e) { $this->handleViewException(new FatalThrowableError($e), $obLevel);// handle }// we'll evaluate the contents of the view inside a try/catch block so we can // flush out any stray output that might get out before an error occurs or // an exception is thrown. this prevents any partial view from leaking. return ltrim(ob_get_clean()); } /** * Handle a view exception. * * @param \Exception $e * @param int $obLevel * @return void * * @throws $e */ protected function handleViewException(Exception $e, $obLevel) { while (ob_get_level() > $obLevel) { ob_end_clean(); }// clean ever thing throw $e;// throw $e }//Handle a view exception. }
[李景山php]每天laravel-20161107|PhpEngine.php
原创
©著作权归作者所有:来自51CTO博客作者lijingsan1的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章