模板基本使用
1. 模板配置
我们继续之前几篇文章的代码设计。这一节主要讲如何来使用InitPHP框架的模板。
先看一下配置,配置文件从initphp/initphp.conf.php中的模板配置拷贝到conf/comm.conf.php文件中。模板的配置看如下:
/*********************************View配置*****************************************/ /** * 模板配置 * 1. 可以自定义模板的文件夹,编译模板路径,模板文件后缀名称,编译模板后缀名称 * 是否编译,模板的驱动和模板的主题 * 2. 一般情况下,默认配置是最优的配置方案,你可以不选择修改模板文件参数 */ $InitPHP_conf['template']['template_path'] = 'web/template'; //模板路径 $InitPHP_conf['template']['template_c_path'] = 'data/template_c'; //模板编译路径 $InitPHP_conf['template']['template_type'] = 'htm'; //模板文件类型 $InitPHP_conf['template']['template_c_type'] = 'tpl.php';//模板编译文件类型 $InitPHP_conf['template']['template_tag_left'] = '<!--{';//模板左标签 $InitPHP_conf['template']['template_tag_right'] = '}-->';//模板右标签 $InitPHP_conf['template']['is_compile'] = true;//模板每次编译-系统上线后可以关闭此功能 $InitPHP_conf['template']['driver'] = 'simple'; //不同的模板驱动编译 $InitPHP_conf['template']['theme'] = ''; //模板主题
配置文件中已经有了详细的注释,这边要注意一下几个配置细节:
is_compile参数。一般情况下,模板都会写在template_path文件夹下,然后会生成新的编译文件到template_c_path文件夹下。在调试环境下打开这个参数,上线之后请关闭这个参数,这样每次请求都不会生成新的文件。
driver 参数。这个参数是模板驱动,默认有两种,第一种是default 第二种是simple,默认是simple
2. 使用模板
在web/目录下创建 template文件夹,主要用来存放模板,模板后缀名.htm
在app/目录下创建data/template_c文件夹,data文件夹主要用来存放生成的模板文件,这个文件需要有可写777权限。
在template下面创建一个hello.htm的模板文件
然后在indexController中调用模板
<!--?php /** * 入口Controller * @author zhuli.zhul * */ class indexController extends Controller { public $initphp_list = array(get); //Action白名单 public function before() { echo before<br/-->; } public function after() { echo after ; } /** * 入口 */ public function run() { $this->view->display(hello); //调用hello.htm模板,后缀名.htm不需要填写 } /** * get方法 */ public function get() { echo THIS IS GET ; } }
浏览器中访问http://127.0.0.1/test/www.initphp.com/ 后可以看到模板调用过,并且模板编译文件夹下多了一个新的文件hello.tpl.php
3. View API使用
View Api 一共只有5个API接口。接口文档:http://www.initphp.com/6_4.htm
模板API使用:
//模板会按照顺序设置,但是set_tpl函数中的第二个参数F和L分别让模板最先和最后显示 $this->view->set_tpl('test'); //设置一个template/test.htm的模板页面 $this->view->set_tpl('user/userinfo'); //设置template/user/userinfo.htm $this->view->set_tpl('header', 'F'); //设置为头部,最先显示 $this->view->set_tpl('footer', 'L'); //最后显示 $this->view->remove_tpl('test'); //可以移除上面已经设置的test.htm模板 $this->view->get_tpl(); //可以得到已经设置的模板数组 $this->view->display(); //模板显示
4. default的模板标签
default模板标签其实就是最原始的PHP使用方法,简单暴力好用。
/* 以下是default的模板标签使用方法(具体使用和PHP中一样):*/ /* 配置文件修改:*/ $InitPHP_conf['template']['driver'] = 'default'; /* 一个简单的模板*/ <!--{echo $uid;}--> //这个输出一个变量 <!--{if (true == true) { }--> <!--{}}--> <!--{layout:user}-->
5. simple模板标签
/* 以下是simple的模板标签使用方法:*/ /* 配置文件修改: */ $InitPHP_conf['template']['driver'] = 'simple'; /* 标签使用方法: */ /* 普通使用方法:*/ <!--{echo $uid;}--> /* if语句使用:*/ <!--{if ($a == 'yes')}--> <!--{elseif ($a == 'no')}--> <!--{else}--> <!--{/if}--> /* foreach语句使用:*/ <!--{foreach ($a as $k => $V)}--> <!--{/foreach}--> /* for语句使用:*/ <!--{for ($i=0; $i<100; $i++)}--> <!--{/for}--> /* 输出变量:*/ <!--{$username}--> /* 输出常量:*/ <!--{APP_PATH}--> <!--{layout:user}-->
模板高级使用
1. 自定义标签
自定义的模板标签放置在: initphp/core/view/driver/文件夹下,该文件夹下已经有 default.init.php 和 simple.init.php,分别为default和simple两个模板标签驱动。文件的名称为:标签驱动名称+'.init.php',例如:simple.init.php类名称为:标签驱动名称+'Init',例如:simpleInit需要定义一个init($str, $left, $right)的公有函数,$str是需要替换的HTML代码,$left是模板标签的左标记(默认:'')需要使用自定义模板标签的时候,别忘记修改配置文件中的:$InitPHP_conf['template']['driver']
具体参看下面的simple模板标签驱动:
if (!defined('IS_INITPHP')) exit('Access Denied!'); /********************************************************************************* * InitPHP 2.1 国产PHP开发框架 View-simple 简单模板驱动规则模型 *------------------------------------------------------------------------------- * 版权所有: CopyRight By initphp.com * 您可以自由使用该源码,但是在使用过程中,请保留作者信息。尊重他人劳动成果就是尊重自己 *------------------------------------------------------------------------------- * $Author:zhuli * $Dtime:2011-10-09 ***********************************************************************************/ class simpleInit { /** * 模板驱动-简单的驱动 * @param string $str 模板文件数据 * @return string */ public function init($str, $left, $right) { //if操作 $str = preg_replace( /.$left.ifs+(.+?).$right./, , $str ); $str = preg_replace( /.$left.else.$right./, , $str ); $str = preg_replace( /.$left.elseifs+(.+?).$right./, , $str ); //for操作 $str = preg_replace(/.$left.fors+(.+?).$right./,,$str); $str = preg_replace(/.$left./for.$right./,,$str); //foreach操作 $str = preg_replace(/.$left.foreachs+(.+?).$right./,,$str); $str = preg_replace(/.$left./foreach.$right./,,$str); //输出变量 $str = preg_replace( /.$left.(\$[a-zA-Z_-ÿ][a-zA-Z0-9_-ÿ]*).$right./, , $str ); //常量输出 $str = preg_replace( /.$left.([A-Z_-ÿ][A-Z0-9_-ÿ]*).$right./s, , $str ); //标签解析 $str = preg_replace ( /.$left./if.$right./, , $str ); $pattern = array('/'.$left.'/', '/'.$right.'/'); $replacement = array(''); return preg_replace($pattern, $replacement, $str); } }
2. layout布局
模板HTML页面中使用Layout:。规则:左标签+'layout:'+'模板名称(不需要带.htm,有目录则user/version,和set_tpl()一样使用)'+右标签Layout是为了解决用户在HTML页面中来实现模板布局,html中使用了,则会显示version.htm静态页面
/* 模板布局,在所有模板引擎中该方法都通用 */ /* 模板布局主要是为了解决模板切割成多个小模板,模板中能直接调用使用*/ /* 标签使用:layout:模板名称(不需要带模板名称后缀,例如user.htm模板,则直接user。如果模板有多个文件夹,则test/user 代表test/user.htm模板)*/ <!--{layout:user}-->
3. 模板主题
一般情况下,一个网站会有多个模板主题,InitPHP提供了简单的模板主题配置方法用户只需要配置$InitPHP_conf['template']['theme']这个变量,如果是red的主题,则值为'red'模板主题都是放在模板默认的目录下面的,例如'red'主题,则模板文件夹目录为: template/red/文件夹下实际上只是在模板默认的文件目录下再添加了一层目录,这样可以方便多主题的应用
4. 编译机制
InitPHP的模板机制都会将HTML页面编译成.php文件,默认为(template_c/编译文件夹和.tpl.php后缀名称)$InitPHP_conf['template']['is_compile']是否开启编译机制,建议开发的时候开启,开发完成上线后,关闭该参数

PHP在現代編程中仍然是一個強大且廣泛使用的工具,尤其在web開發領域。 1)PHP易用且與數據庫集成無縫,是許多開發者的首選。 2)它支持動態內容生成和麵向對象編程,適合快速創建和維護網站。 3)PHP的性能可以通過緩存和優化數據庫查詢來提升,其廣泛的社區和豐富生態系統使其在當今技術棧中仍具重要地位。

在PHP中,弱引用是通過WeakReference類實現的,不會阻止垃圾回收器回收對象。弱引用適用於緩存系統和事件監聽器等場景,需注意其不能保證對象存活,且垃圾回收可能延遲。

\_\_invoke方法允許對象像函數一樣被調用。 1.定義\_\_invoke方法使對象可被調用。 2.使用$obj(...)語法時,PHP會執行\_\_invoke方法。 3.適用於日誌記錄和計算器等場景,提高代碼靈活性和可讀性。

Fibers在PHP8.1中引入,提升了並發處理能力。 1)Fibers是一種輕量級的並發模型,類似於協程。 2)它們允許開發者手動控制任務的執行流,適合處理I/O密集型任務。 3)使用Fibers可以編寫更高效、響應性更強的代碼。

PHP社區提供了豐富的資源和支持,幫助開發者成長。 1)資源包括官方文檔、教程、博客和開源項目如Laravel和Symfony。 2)支持可以通過StackOverflow、Reddit和Slack頻道獲得。 3)開發動態可以通過關注RFC了解。 4)融入社區可以通過積極參與、貢獻代碼和學習分享來實現。

PHP和Python各有優勢,選擇應基於項目需求。 1.PHP適合web開發,語法簡單,執行效率高。 2.Python適用於數據科學和機器學習,語法簡潔,庫豐富。

PHP不是在消亡,而是在不斷適應和進化。 1)PHP從1994年起經歷多次版本迭代,適應新技術趨勢。 2)目前廣泛應用於電子商務、內容管理系統等領域。 3)PHP8引入JIT編譯器等功能,提升性能和現代化。 4)使用OPcache和遵循PSR-12標準可優化性能和代碼質量。

PHP的未來將通過適應新技術趨勢和引入創新特性來實現:1)適應云計算、容器化和微服務架構,支持Docker和Kubernetes;2)引入JIT編譯器和枚舉類型,提升性能和數據處理效率;3)持續優化性能和推廣最佳實踐。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

記事本++7.3.1
好用且免費的程式碼編輯器

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。