位置: 编程技术 - 正文

Laravel学习教程之View模块详解(laravel视频教程)

编辑:rootadmin

推荐整理分享Laravel学习教程之View模块详解(laravel视频教程),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:laravel实战教程,laravel 入门教程,laravel技巧,laravel 入门教程,laravel快速入门,laravel视频教程,laravel入门与实战,laravel 入门教程,内容如对您有帮助,希望把文章链接给更多的朋友!

前言

本文主要是给大家介绍了关于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引擎,核心调用方法是

5、如果是blade.php后缀,采用blade引擎;

Laravel学习教程之View模块详解(laravel视频教程)

这个引擎会主动作缓存处理,如果缓存文件未过期,则直接调用缓存文件,否则重新编译,并通过sha1生成缓存文件(位于storage/framework/views目录下);

Blade 引擎编译

Blade引擎对文件的编译,是通过大量的正则匹配和替换实现的;

在解析的过程中,Blade会先使用token_get_all函数获取视图文件中的被PHP解释器认为是HTML(T_INLINE_HTML)的部分,然后依次进行Comments、Extensions、Statements 和 Echos部分的正则替换;

注释部分

核心代码如下,将注释符号“{{-- --}}”包裹的代码替换为空字符串;

扩展部分

通过extend方法向BladeCompiler添加自定义处理的回调函数,对模板内容进行自定义的文本匹配替换;

核心代码在IlluminateViewBladeCompiler文件中,如下:

指令替换

这部分就是将类似@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模板

总结

标签: laravel视频教程

本文链接地址:https://www.jiuchutong.com/biancheng/288229.html 转载请保留说明!

上一篇:php制作圆形用户头像的实例_自定义封装类源代码(php图形用户界面)

下一篇:PHP文件系统管理(实例讲解)(php 文件系统)

  • 补充登记法怎么写
  • 移动平均加权法是什么意思
  • 进料加工企业的增值税如何处理
  • 支付开票税款计入什么科目
  • 劳务派遣公司收取劳务费应开具什么票
  • 收资料费怎么入账科目
  • 开出转账支票用什么凭证
  • 供应商采购额变动原因有哪些
  • 长期待摊费用当月增加当月摊销吗
  • 异地工程预缴个税
  • 汽车用品包含
  • 易票365怎么认证发票
  • 商会会费收入要交所得税吗
  • 旅行社会议主持开场
  • 土地增值税哪些可以抵扣
  • 税收征收管理法
  • 调整薪酬结构
  • 开户许可证复印件是什么
  • 其他权益性无形资产的进项税额抵扣
  • 已抵扣原材料进项税额转出完整分录
  • 什么情况财务费用是负数
  • 进项税额转出会计处理
  • 东芝t351笔记本
  • 变动成本法和完全成本法利润差异
  • 企业报税流程图
  • 公司名下汽车过户给个人
  • 工资薪金所得包括差旅费津贴吗
  • 装win7ahci
  • 为什么WIN10系统打在画面进不去
  • 城建税会计分录怎么写
  • windows11怎么设置锁屏时间
  • 出口退税如何办退税手续
  • bho是什么文件夹
  • vue3自定义指令
  • 职工福利费包括奖金吗
  • 扣缴义务人应扣未扣如何处罚
  • 奥伊米亚康冬季气温低原因
  • 职工福利费的税收金额怎么填写
  • php统计中文长度
  • 编写jsp程序,实现简易计算机
  • ps填头发
  • php中array用法
  • 打车费属于差旅费吗
  • 公司食堂吃饭没钱怎么办
  • 批处理命令在windows操作中的典型应用
  • 专项附加扣除中住房租金扣除所指的工作城市范围包括
  • 航天金税服务费怎么交
  • 电子承兑汇票贴现怎么做账
  • 税务怎么认定虚列工资
  • sql查询语句大全实例教程
  • 服务业预收账款什么时候确认收入
  • 一般纳税人每月开票限额是多少
  • 视同销售的账务处理如何做?
  • 公司新装宽带怎么安装
  • 这个营业外支出怎么算
  • 保理手续费计入投资收益吗
  • 纳税人办理逾期申报流程
  • 投资性房地产在建
  • 收到商业承兑汇票的会计分录
  • 物流公司保险怎么买
  • 无形资产摊销如何记账
  • 一个关于数据库表中的各条记录
  • MySQL 5.5.x my.cnf参数配置优化详解
  • node使用mysql
  • win8系统任务栏怎么隐藏
  • xp系统强制删除文件
  • WIN10如何设置字体大小
  • centos安装位置选择
  • 如何在xp系统中调整移动硬盘
  • 苹果官网
  • win7更改文件名的方法
  • win 8系统怎么样
  • win10老是自动重启是什么原因
  • css怎么加图标
  • tf-idf例题
  • js数据的基本类型有哪些
  • Node.js中的construct构造函数
  • 下载重庆税务官方app
  • 小规模纳税人土地税减免政策
  • 精准扶贫的实践与探索经验
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设