巅云智能建站平台搭建版(创业流派版)火爆上线,毕生受权!新增:文章智能收罗+全站真静态打包+都会分站+智能小法式+不法词过滤+H5自顺应+智能链词等功效功效概况
建站专提News

Laravel进修教程之View模块详解

一佰互联网站开辟设想(www.taishanly.com) 宣布日期 2020-04-26 09:01:51 阅读数: 114

媒介

本文首要是给大师先容了对Laravel中View模块的相干材料,分享出来供大师参考进修,上面话未几说了,来一路看看具体的先容吧。

本文是基于Laravel 5.4版本的路由模块代码停止阐发誊写;

文件规划

View模块的文件款式及功效以下图所示:

视图化显现时的大要流程:

1、经由进程view()体例的挪用,起头视图的显现;

2、起首,查找视图文件;

(1)顺次遍历途径,若是文件名带定名空间(也便是::之前的局部),则接纳定名空间对应注册的途径数组,不然接纳全局途径数组(在IlluminateViewFileViewFinder类中的paths变量);

(2)连系以后途径,文件名,后缀名(默许挨次是blade.php、php、css),判定文件是不是存在;

(3)若是文件不存在,报非常:对应的view文件不存在;若是文件存在,则按照后缀名挪用对应的引擎停止剖析;

3、若是是css后缀,接纳file引擎,焦点挪用体例是file_get_contents;

4、若是是php后缀,接纳php引擎,焦点挪用体例是

ob_start();include $__path;ob_get_clean();

5、若是是blade.php后缀,接纳blade引擎;

这个引擎会自动作缓存处置,若是缓存文件未过时,则间接挪用缓存文件,不然从头编译,并经由进程sha1天生缓存文件(位于storage/framework/views目次下);

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增加自界说处置的回调函数,对模板内容停止自界说的文本婚配替代;

焦点代码在IlluminateViewBladeCompiler文件中,以下:

// 自界说的文本替代扩大 数组protected $extensions = [];protected function compileExtensions($value) { foreach ($this->extensions as $compiler) {  $value = call_user_func($compiler, $value, $this); }  return $value;}

指令替代

这局部便是将近似@if这类框架自带的指令和经由进程directive体例注册的指令停止文本替代;

框架供给的指令有以下十局部:

  • ViewCompilersConcernsCompilesAuthorizations: 权限查抄 指令包含:@can、@cannot、@elsecan、@elsecannot、@endcan、@endcannot
  • ConcernsCompilesComponents:与组件、插槽相干 指令包含:@component、@endcomponent、@slot、@endslot
  • ConcernsCompilesConditionals:与判定语句相干 指令包含:@if、@unless、@else、@elseif、@endif、@endunless、@isset、@endisset、@hassection
  • ConcernsCompilesIncludes:嵌入文件 指令包含:@each、@include、@includeif、@includewhen
  • ConcernsCompilesInjections:办事注入 指令包含:@inject
  • ConcernsCompilesLayouts:和规划相干 指令包含:@extends、@section、@parent、@yield、@show、@append、@overwrite、@stop、@endsection
  • ConcernsCompilesLoops:与轮回相干 指令包含:@forelse、@empty、@endforelse、@endempty、@for、@foreach、@break、@continue、@endfor、@endforeach、@while、@endwhile
  • ConcernsCompilesRawPhp:与原生PHP语句相干 指令包含:@php、 @endphp、 @unset
  • ConcernsCompilesStacks:和仓库相干 指令包含:@stack、@push、@endpush、@prepend、@endprepend
  • ConcernsCompilesTranslations:与本地化翻译相干 指令包含:@lang、@endlang、@choice

Echo 替代

echo输入是针对{!! !!}、{{ }}、{{{ }}}三种括号停止正则替代;

  • {!! !!}输入未本义字符,用于输入原生带html标签的值;
  • {{ }}一般输入,撑持三目运算符替代;
  • {{{ }}}输入本义字符,撑持三目运算符替代;

三目运算符替代是指:{{ $a ?: "默许值" }} (或 {{$a or "默许值"}}) 换成 {{ isset($a) ? $a : "默许值"}}

参考文章

Laravel 模板引擎(Blade)道理简析

Laravel 5.4 文档 前端 —— Blade模板

总结

以上便是这篇文章的全数内容了,但愿本文的内容对大师的进修或任务能带来必然的赞助,若是有疑难大师能够留言互换,感谢大师对网页设想的撑持。

一佰互联是天下着名建站品牌办事商,咱们有九年、网站建造、网页设想、php开辟和域名注册及假造主机办事经历,供给的办事更是天下着名。最近几年来还整合团队上风自立开辟了可视化多用户”“3.0平台版,拖拽排版网站建造设想,轻松完成pc站、手机微网站、小法式、APP一体化全网营销网站扶植 ,已胜利的为天下上百家收集公司供给自助建站平台搭建办事。更多资讯:tags标签

相干消息more

30
04月
利用PHP完成密保卡功效完成代码&l

结果图:密保卡入库 复制代码 代码以下: $this->load->model("admin/m_mibao"); $data ... >>概况

26
03月
叫板微信,一文看破付出宝小法式!

简介:8月18日,寂静已久的付出宝小法式俄然开放公测了。这象征着继微信小法式以后,付出宝也正式入驻小法式这个全重生态,小法式的市场范围会进一... >>概况

04
08月
停止网站建造,定制要从这五个方面起头斟酌

停止网站定制要从这五个方面起头斟酌。 当一个企业网站的范围到必然程度以后,凡是必须对网站的构架即版面等展开一些晋升和点窜,而求网站获得更强... >>概况

20
04月
HTML5新表单位素_能源节点Java学院整

HTML5 新的表单位素HTML5 有以下新的表单位素:<datalist><keygen... >>概况

高端网站扶植

美工统筹SEO,为企业电子商务营销助力!

德律风:

023-85725751
建站

产物

域名注册 假造主机 云办事器 企业邮局
智能建站 APP打包 微站/小法式 创业平台
网站推行 媒体营销 智能收罗 AI机械人
400德律风 短信营销 店销机械人
私家定制 流派网站