日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

[thinkphp] 是如何输出一个页面的

發布時間:2023/12/13 php 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [thinkphp] 是如何输出一个页面的 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

表面上看,TP輸出一個頁面很簡單:$this->display();

實際上是怎么回事呢?$this->display(); 這個display()方法是定義在ThinkPHP/Library/Think/Controller.class.php這個文件中的

protected function display($templateFile='',$charset='',$contentType='',$content='',$prefix='') {$this->view->display($templateFile,$charset,$contentType,$content,$prefix); }

而這個display方法其實是屬于$this->view這個對象的。$this->view 是什么呢?還是ThinkPHP/Library/Think/Controller.class.php這個文件

public function __construct() {Hook::listen('action_begin',$this->config);//實例化視圖類$this->view = Think::instance('Think\View');//控制器初始化if(method_exists($this,'_initialize'))$this->_initialize();}

可以看到$this->view其實是Think\View類的一個實例,Think\View 就是ThinkPHP/Library/Think/View.class.php啦

那我們就去看看View.class.php中的display方法是長什么樣的

public function display($templateFile='',$charset='',$contentType='',$content='',$prefix='') {G('viewStartTime');// 視圖開始標簽Hook::listen('view_begin',$templateFile);// 解析并獲取模板內容$content = $this->fetch($templateFile,$content,$prefix);// 輸出模板內容$this->render($content,$charset,$contentType);// 視圖結束標簽Hook::listen('view_end');}

忽略G方法、鉤子, 就是簡單的兩部分內容:1、解析并獲取模板內容;2、輸出模板內容;

具體怎么回事呢?

第一點是有兩部分的,首先獲取模板文件的位置($this->parseTemplate) ,然后把里面的PHP標簽替換成具體的內容 

第二點呢,太簡單了,直接echo $content,就輸出內容了

到此,$this->display()背后的過程就清清楚楚了。

?

轉載于:https://www.cnblogs.com/bushe/p/4620378.html

總結

以上是生活随笔為你收集整理的[thinkphp] 是如何输出一个页面的的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。