继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

PhpEngine.php

四季花海
关注TA
已关注
手记 316
粉丝 42
获赞 161

<?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.

}

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP