中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

論PHP模板的簡單高效實現

發布時間:2020-07-02 16:04:05 來源:網絡 閱讀:1001 作者:我是小谷粒 欄目:開發技術

大家都知道PHP是世界上最好的語言,PHP在項目開發中的靈活性是個非常重要的優點,非常適合經常變動的業務邏輯和頁面內容,當然都離不開一個好用的模板引擎,市面上最常見的PHP模板引擎是smarty,但是smarty功能十分豐富,有些重量級了.
那有沒有更好的模板引擎呢? 先來探討一下模板引擎的幾大特點: 書寫簡單,執行速度,邏輯表達,方便擴展等.從這幾方面看最適合的模板引擎就是PHP本身了,所有的要求都能滿足要求,不管是smarty還是其他的模板引擎,在執行速度,邏輯表達,方便擴展的方面都不可能超過PHP本身,因為他們都是PHP實現的.唯一的短板就是書寫簡單這一方面.
那我們怎么補齊這塊短板呢? 其實完全可以自己實現一個模板引擎語法規則,然后配合上一個預編譯過程即可,把自定義個的模板引擎語法,編譯成原生PHP代碼即可,既補足了書寫簡單的短板,也沒有對執行速度,邏輯表達,方便擴展等方面有任何損失.并且編譯只需一次,編譯一次以后模板頁面沒有變動,再也不需要第二次處理,配合OPCODE緩存更加強大,更能享受到PHP版本升級帶來的性能紅利.
那怎么來實現呢? 在PHP頁面中使用的最多的就是<?php echo $row["title"]; ?>來輸出一個變量內容,寫起來鍵盤敲擊次數還是比較多的.完全可以實用模板語法{{$row.title}}代替,從原來的28個字符減少到了14個字符,包括if else foreach include等模板語法,只需要一個正則替換,即可實現一個簡單高效的模板引擎.
模板頁面
<table>
{{foreach $rows as $i => $row}}
<tr><td>{{$row["username"]}}</td><td>{{$row["password"]}}</td></tr>
{{endforeach}}
</table>
PHP頁面
<table>
<?php foreach ($rows as $i => $row) { ?>
<tr><td><?php echo $row["username"]; ?></td><td><?php echo $row["password"]; ?></td></tr>
<?php } ?>
</table>
核心代碼示意
// 此代碼已被精簡
$tmpl = preg_replace('/{{if (.+?)}}/', '<?php if ($1) { ?>', $tmpl);
$tmpl = preg_replace('/{{else}}/', '<?php } else { ?>', $tmpl);
$tmpl = preg_replace('/{{elseif (.+?)}}/', '<?php } elseif ($1) { ?>', $tmpl);
$tmpl = preg_replace('/{{endif}}/', '<?php } ?>', $tmpl);
$tmpl = preg_replace('/{{foreach (.+?)}}/', '<?php foreach ($1) { ?>', $tmpl);
$tmpl = preg_replace('/{{endforeach}}/', '<?php } ?>', $tmpl);
$tmpl = preg_replace('/{{include (.+?)}}/', '<?php include $1.php; ?>', $tmpl);
$tmpl = preg_replace('/{{(.+?)}}/', '<?php echo $1; ?>', $tmpl);
好了,完美解決模板引擎的簡單高效需求,還有什么自己的想法都可以添加進來哦!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

恩平市| 盐津县| 沙田区| 曲阳县| 尉犁县| 祥云县| 四川省| 卢氏县| 开江县| 诸城市| 胶州市| 阿城市| 静乐县| 济宁市| 桂阳县| 舒城县| 轮台县| 上饶市| 榆社县| 涞水县| 澄迈县| 横峰县| 曲周县| 巴里| 郎溪县| 宿松县| 淮滨县| 庆阳市| 大姚县| 钟山县| 泗水县| 铜山县| 奈曼旗| 思南县| 沂源县| 宁强县| 东莞市| 洪泽县| 积石山| 桐乡市| 名山县|