国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - PHP教程 - laravel框架實(shí)現(xiàn)為 Blade 模板引擎添加新文件擴(kuò)展名操作示例

laravel框架實(shí)現(xiàn)為 Blade 模板引擎添加新文件擴(kuò)展名操作示例

2020-07-08 15:24與f PHP教程

這篇文章主要介紹了laravel框架實(shí)現(xiàn)為 Blade 模板引擎添加新文件擴(kuò)展名操作,結(jié)合實(shí)例形式詳細(xì)分析了laravel框架Blade 模板引擎添加新文件擴(kuò)展名具體操作步驟與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下

本文實(shí)例講述了laravel框架實(shí)現(xiàn)為 Blade 模板引擎添加新文件擴(kuò)展名。分享給大家供大家參考,具體如下:

因?yàn)橐恍┰颍覝?zhǔn)備把 Blessing Skin 的框架換成 Laravel 了(之前是自己搭建的一個(gè)框架),但是在模板遷移的時(shí)候遇到了一點(diǎn)問(wèn)題。

之前我是使用的 XiaoLer/blade 這個(gè)從 Laravel 中抽離出來(lái)的 Blade 模板引擎,并且自定義為使用 .tpl文件后綴。你問(wèn)為啥不用默認(rèn)的 .blade.php 而是用這個(gè) Smarty 的模板擴(kuò)展名?能有啥,好看唄 :-D

不過(guò)之前我是直接調(diào)用 FileViewFinder 類的 addExtension 方法來(lái)添加擴(kuò)展名的,但是在 Laravel 里就不能這樣了。你總不能在 Illuminate\View 加幾句話吧?

去 Google 搜索了下,沒(méi)發(fā)現(xiàn)有可以很方便使用的方法(當(dāng)然是搜的鷹文,說(shuō)不定是我姿勢(shì)不對(duì)),就只好自己找了。

首先先從 View Facade 入手,可以看到它是從服務(wù)容器中解析出了 view 這個(gè)綁定。繼續(xù)往下找,打開(kāi) Illuminate\View\ViewServiceProvider,看看 View 的服務(wù)提供者到底是把啥給綁定到 view 上去了:

?
1
2
3
4
5
6
7
8
9
10
11
public function registerFactory()
{
  $this->app->singleton('view', function ($app) {
    $resolver = $app['view.engine.resolver'];
    $finder = $app['view.finder'];
    $env = new Factory($resolver, $finder, $app['events']);
    $env->setContainer($app);
    $env->share('app', $app);
    return $env;
  });
}

嗯嗯,我們可以看到這是綁定了個(gè) Illuminate\View\Factory 實(shí)例,于是我們繼續(xù)往下找,看看這個(gè)工廠類都有啥方法:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/**
 * Register a valid view extension and its engine.
 *
 * @param string  $extension
 * @param string  $engine
 * @param \Closure $resolver
 * @return void
 */
public function addExtension($extension, $engine, $resolver = null)
{
  $this->finder->addExtension($extension);
  if (isset($resolver)) {
    $this->engines->register($engine, $resolver);
  }
  unset($this->extensions[$extension]);
  $this->extensions = array_merge([$extension => $engine], $this->extensions);
}

哦哦~ 果然我們?cè)诠S類里找到了一個(gè) FileViewFinder::addExtension 的封裝。然而正當(dāng)我欣喜地準(zhǔn)備調(diào)用的時(shí)候,卻發(fā)現(xiàn)這個(gè)方法有個(gè)神秘的 $engine 參數(shù)。

誒?WTF?這尼瑪是啥?( ?_ゝ?)

看了看文檔也沒(méi)看出個(gè)所以然來(lái),就只好從方法的具體代碼里找找蛛絲馬跡了:

?
1
$this->extensions = array_merge([$extension => $engine], $this->extensions);

哦呀?這一行在 $this->extensions 里加上了一個(gè) [$extension => $engine] 的數(shù)組,那么只要我們看看這個(gè)數(shù)組原先的定義,就可以知道這個(gè) $engine 是個(gè)啥子了:

?
1
2
3
4
5
6
/**
 * The extension to engine bindings.
 *
 * @var array
 */
protected $extensions = ['blade.php' => 'blade', 'php' => 'php'];

啊哈,原來(lái)這個(gè) $engine 指的是解析 $extension 所使用的引擎!這下一切都水落石出了,如果你在傳入 .tpl 的同時(shí)傳入一個(gè) blade 的引擎,就是告訴 Blade,要把以 .tpl 為擴(kuò)展名的文件用 Blade 模板引擎來(lái)解析。

這下一切都簡(jiǎn)單了,我們只需要在 AppServiceProvider (或者其他適當(dāng)?shù)姆?wù)提供者)里通過(guò)調(diào)用 View Facade 就可以非常方便快捷地添加擴(kuò)展名了:

?
1
View::addExtension('tpl', 'blade');
 

希望本文所述對(duì)大家基于Laravel框架的PHP程序設(shè)計(jì)有所幫助。

原文鏈接:https://www.cnblogs.com/fps2tao/p/7655492.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 成人黄色在线观看 | 国产成人高清精品免费5388 | 成人免费毛片高清视频 | 国产精品久久久久久久久久久小说 | 91精品国产综合久久久久久丝袜 | 日日夜夜伊人 | 一区二区三区免费观看视频 | 嫩呦国产一区二区三区av | 涩涩一区 | 中文字字幕一区二区三区四区五区 | 91综合网| 糈精国产xxxx在线观看 | 91精品国产欧美一区二区成人 | 国产精品第一国产精品 | 黄色大片网站 | 美女爽到呻吟久久久久 | 一级黄色片网站 | 日韩一区二区三区视频 | 亚洲精品免费av | 日韩精品一区二区三区中文 | 日韩视频在线播放 | 四季久久免费一区二区三区四区 | 久久艹精品| 精品久久久久久久久久久久久久久久久久久 | av网站在线看 | 成人va在线观看 | 欧美一区第一页 | 欧美一级欧美三级在线观看 | 日韩在线成人 | 国产精品一区二区三区四区 | 日韩欧美高清视频 | 久久精品国产亚洲一区二区三区 | 国产免费一区二区三区 | 国内美女人妻一级毛片免费看 | 国产精品区二区三区日本 | 一区国产精品 | 亚洲第1页 | 日本三级视频在线观看 | 欧美成人a | 欧美一区精品 | 黄色av网站免费 |