這篇文章主要為大家介紹了關於Laravel學習教程之View模組的相關資料,文中透過範例程式碼將View模組介紹的非常詳細,對大家的學習或工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
前言
本文主要是跟大家介紹了Laravel中View模組的相關資料,分享出來供大家參考學習,下面話不多說了,來一起看看詳細的介紹吧。
本文是基於Laravel 5.4版本的路由模組程式碼進行分析書寫;
#檔案結構
#視圖化呈現時的大約流程:
1 、透過view()方法的調用,開始視圖的呈現;
#
ob_start(); include $__path; ob_get_clean();5、如果是blade.php後綴,採用blade引擎;
Blade 引擎編譯
protected $compilers = [ 'Comments', // 注释部分 'Extensions', // 扩展部分 'Statements', // 语句块 (@ 开头的指令) 'Echos', // 输出 ]; protected function parseToken($token) { list($id, $content) = $token; if ($id == T_INLINE_HTML) { foreach ($this->compilers as $type) { $content = $this->{"compile{$type}"}($content); } } }在解析的過程中,Blade會先使用token_get_all函數來取得視圖檔案中的被PHP解釋器認為是HTML(T_INLINE_HTML)的部分,然後依序進行Comments、Extensions、Statements 和Echos部分的正規取代;
註解部分
##核心程式碼如下,將註解符號「{{ -- --}}」包裹的程式碼替換為空字串;
preg_replace("/{{--(.*?)--}}/s", '', $value);
透過extend方法為BladeCompiler新增自訂處理的回呼函數,對範本內容進行自訂的文字匹配替換;
核心程式碼在Illuminate\View\BladeCompiler檔案中,如下:
// 自定义的文本替换扩展 数组 protected $extensions = []; protected function compileExtensions($value) { foreach ($this->extensions as $compiler) { $value = call_user_func($compiler, $value, $this); } return $value; }
這部分就是將類似@if這種框架自帶的指令和透過directive方法註冊的指令進行文字替換;
框架提供的指令有以下十部分:
Concerns\CompilesRawPhp:與原生PHP語句相關
Concerns\CompilesStacks:和堆疊相關
Concerns\CompilesTranslations:與在地化翻譯相關
Echo 取代
{{ }}正常輸出,支援三目運算子替換;
#{{ }}}輸出轉義字符,支援三目運算符替換;
三目運算子替換是指:{{ $a ?: "預設值" }} (或{{$a or "預設值"}}) 換成{{ isset($a) ? $a : "預設值"}}
以上是Laravel之View模組詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!