位置: 编程技术 - 正文

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 文件系统)

  • 计算应交增值税并结转未交增值税怎么做用友
  • 纳税信用等级评定在哪里查询
  • 境外旅客购物离境退税条件
  • 固定资产入账怎么做账
  • 营业执照丢失公示几天才能注销
  • 企业购进软件系统后如何做账
  • 基本户注销后还可以再开吗
  • 会计法对填制审核会计凭证有哪些规定
  • 二手房怎么避免一房多卖
  • 增值税的简易计税是什么意思
  • 预付的固定资产没有收到发票怎么入账
  • 进口内销是什么意思
  • 股东转入投资款
  • 发票开具提示
  • 公司做账是做什么
  • 核定征收的企业所得税怎么算
  • 建筑业增值税普通发票可以抵扣吗
  • 代扣代缴个人所得税税率表
  • 公司对公账户可以转私人账户多久到账
  • 每月物业费怎么计算公式
  • 住宿费本地的计入什么费
  • 机械租赁的发票
  • 公会经费开支范围
  • 姑娘果的功效与作用百度百科
  • 费用已付款跨年怎么做账
  • videojs自定义按钮
  • 收到银行存款利息会计分录
  • 六月雪的养殖方法和浇水时间
  • 'The Wave' sandstone formation in Coyote Buttes North, Paria Canyon-Vermilion Cliffs National Monument, Arizona (© Dennis Frates/Alamy)
  • 康沃尔郡的大学
  • 金融业的特殊性指的是
  • 应收票据终止确认的情形
  • 折旧的计提
  • 内资企业
  • 残保金解决方案
  • 捐赠支出如何做凭证
  • python去掉文本的指定符号
  • 事业单位一级项目和二级项目区别
  • 汇划款项与资金清算核算内容包括哪些
  • 属于长期险种的是
  • 加油充值预付卡怎么做账
  • 公司股东向银行货款,与私人财产有没有关系
  • access speed
  • mysql proxy问题的解决方法
  • sql 附加数据库
  • mysql的环境配置
  • 应付账款的入账时间为
  • 代垫电费收回开票吗
  • 刚开的小公司怎么报税
  • 金税盘锁死341101
  • 出售金融商品的增值税计税依据
  • 支付临时工的工资计入应付职工薪酬吗
  • 会计的三个结转是什么
  • 金税盘发票认证怎么操作流程
  • 供应商质量索赔流程
  • 工会经费会返还吗
  • 会计 预提
  • 新建企业需要什么手续
  • 用union怎么把结果加起来
  • 有效减少win8关机时间的方法分享
  • ubuntu20.04挂载
  • win10h2版本
  • windows允许访问
  • opengl编程宝典
  • vim多行匹配
  • ecmascript6入门
  • scrollview怎么用
  • android开发环境的搭建实验总结
  • android开机自启动显示界面
  • jquery css hover
  • Node.js中的核心模块包括哪些内容?
  • 安全工具有哪些
  • Unity3D游戏开发(第2版)
  • Linux bash Shell中的变量类型详解
  • 代收的款项支付需不需要开发票
  • 浙江税务app不能网上办税
  • 非税收入纳入一般公共预算管理
  • 广东省电子税务局电话
  • 税是每个人都要交的吗
  • 会计报表错误
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设