這篇文章主要為大家介紹了關於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);
部分
// 自定义的文本替换扩展 数组 protected $extensions = []; protected function compileExtensions($value) { foreach ($this->extensions as $compiler) { $value = call_user_func($compiler, $value, $this); } return $value; }
指令取代
指令包括:@can、@cannot、@elsecan、@elsecannot、@endcan、@endcannot
指令包括:@component、@endcomponent、@slot、@endslot
指令包括:@if、@unless、@else、@elseif、@endif、@endunless、@isset、@endisset、@hassection
指令包括:@each、@include、@includeif、@includewhen
指令包括:@inject
指令包含:@extends、@section、@parent、@yield、@show、@append、@overwrite、@stop、@endsection
指令包括:@forelse、@empty、@endforelse、@endempty、@for、@foreach、@break、@continue、@endfor、@endforeach、@while、@endwhile
Echo 取代
{{ }}正常輸出,支援三目運算子替換;
#{{ }}}輸出轉義字符,支援三目運算符替換;
三目運算子替換是指:{{ $a ?: "預設值" }} (或{{$a or "預設值"}}) 換成{{ isset($a) ? $a : "預設值"}}
以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP中文網!
相關推薦:
#
以上是Laravel的View模組學習的詳細內容。更多資訊請關注PHP中文網其他相關文章!