<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ## 介紹 `think-template`是一個基于PHP`5.6+`實現的編譯型模板引擎,主要特性包括: - 支持XML標簽庫和普通標簽的混合定義; - 支持直接使用PHP代碼書寫; - 支持文件包含; - 支持多級標簽嵌套; - 支持布局模板功能; - 一次編譯多次運行,編譯和運行效率非常高; - 模板文件和布局模板更新,自動更新模板緩存; - 系統變量無需賦值直接輸出; - 支持多維數組的快速輸出; - 支持模板變量的默認值; - 支持頁面代碼去除Html空白; - 支持變量組合調節器和格式化功能; - 允許定義模板禁用函數和禁用PHP語法; - 通過標簽庫方式擴展; 功能特性和ThinkPHP`5.1`內置的模板引擎基本一致,適用于沒有使用`ThinkPHP`框架但希望找一個高性能的編譯型模板引擎的情況。 ## 安裝 通過`composer`直接安裝即可 ~~~php composer require topthink/think-template ~~~ ## 用法示例 在根目錄下創建`index.php`入口文件測試: ~~~php <?php namespace think; require __DIR__.'/vendor/autoload.php'; // 設置模板引擎參數 $config = [ // 模板文件目錄 'view_path' => './template/', // 模板編譯緩存目錄(可寫) 'cache_path' => './runtime/', // 模板文件后綴 'view_suffix' => 'html', ]; $template = new Template($config); // 模板變量賦值 $template->assign('name','thinkphp'); // 讀取模板文件渲染輸出 $template->fetch('index'); ~~~ 更多的模板引擎參數可以參考 `fetch`方法必須指定模板文件名(不需要后綴和路徑),上面的代碼對應的模板文件位于 `./template/index.html`。 然后就可以在模板文件中輸出模板變量 ~~~ Hello,{$name}! ~~~ 執行入口文件應該會看到輸出 ``` Hello,thinkphp! ``` 變量輸出的定界符支持自定義,例如: ``` $config = [ // 模板文件目錄 'view_path' => './template/', // 模板編譯緩存目錄(可寫) 'cache_path' => './runtime/', // 模板文件后綴 'view_suffix' => 'html', // 模板引擎普通標簽開始標記 'tpl_begin' => '{', // 模板引擎普通標簽結束標記 'tpl_end' > '}', ]; ``` 如果要批量給模板變量賦值,可以用 ``` // 批量賦值 $template->assign([ 'name' => 'thinkphp', 'foo' => 'bar', ]); ``` 支持直接渲染內容輸出,不需要定義模板文件 ``` $template = new Template($config); // 模板變量賦值 $template->assign('name','thinkphp'); // 渲染內容輸出 $content = 'Hello,{$name}!'; $template->display($content); ``` 所有的模板變量默認輸出都會自動進行轉義處理,以避免`XSS`攻擊的可能性。如果你不需要進行任何的轉義,可以使用`|raw`保持原樣不做轉義輸出(例如輸出HTML內容的時候需要)。 ``` Hello,{$name|raw}! ``` ## 數組和對象輸出 如果需要在模板中輸出數組,可以使用 ``` {$item.name} // 或者 {$item['name']} ``` 要輸出對象的屬性,可以使用 ``` {$object->name} ``` 也可以直接調用對象的常量或者方法 ~~~cmd 常量:{$object::CONST_NAME} 方法:{$object->method()} ~~~ 支持函數 ``` {$name|strtolower|strip_tags} ``` ## 系統變量輸出 如果需要輸出系統變量,可以不需要賦值給模板變量然后輸出,可以直接在模板文件中輸出系統變量,例如: ~~~ {$Think.server.script_name} // 輸出$_SERVER['SCRIPT_NAME']變量 {$Think.session.user_id} // 輸出$_SESSION['user_id']變量 {$Think.get.page} // 輸出$_GET['page']變量 {$Think.cookie.name} // 輸出$_COOKIE['name']變量 ~~~ 支持輸出 `$_SERVER`、`$_ENV`、 `$_POST`、 `$_GET`、 `$_REQUEST`、`$_SESSION`和 `$_COOKIE`變量。 如果系統常量直接使用 ~~~ {$Think.PHP_VERSION} ~~~ ## 運算符 我們可以對模板輸出使用運算符,包括如下支持。 | 運算符 | 使用示例 | |-----|-----| | `+` | `{$a+$b}` | | `-` | `{$a-$b}` | | `*` | `{$a*$b}` | | `/` | `{$a/$b}` | | `%` | `{$a%$b}` | | `++` | `{$a++}` 或 `{++$a}` | | `--` | `{$a--}` 或` {--$a}` | | 綜合運算 | `{$a+$b*10+$c} `| 在使用運算符的時候,不再支持前面提到的函數過濾用法,例如: ~~~ {$user.score+10} //正確的 {$user['score']+10} //正確的 {$user['score']*$user['level']} //正確的 {$user['score']|myFun*10} //錯誤的 {$user['score']+myFun($user['level'])} //正確的 ~~~ ## 三元運算 模板可以支持三元運算符,例如: ~~~ {$status? '正常' : '錯誤'} {$info['status']? $info['msg'] : $info['error']} {$info.status? $info.msg : $info.error } ~~~ 還支持如下的寫法: ~~~ {$name ?? '默認值'} ~~~ ## 原樣輸出 可以使用`literal`標簽來防止模板標簽被解析,例如: ~~~cmd {literal} Hello,{$name}! {/literal} ~~~ 上面的`{$name}`標簽被`literal`標簽包含,因此并不會被模板引擎解析,而是保持原樣輸出。 `literal`標簽還可以用于頁面的JS代碼外層,確保JS代碼中的某些用法和模板引擎不產生混淆。 總之,所有可能和內置模板引擎的解析規則沖突的地方都可以使用`literal`標簽處理。 ## 模板注釋 模板支持注釋功能,該注釋文字在最終頁面不會顯示,僅供模板制作人員參考和識別。 ### 單行注釋 格式: ~~~cmd {/* 注釋內容 */ } 或 {// 注釋內容 } ~~~ 例如: ~~~cmd {// 這是模板注釋內容 } ~~~ > 注意`{`和注釋標記之間不能有空格。 ### 多行注釋 支持多行注釋,例如: ~~~cmd {/* 這是模板 注釋內容*/ } ~~~ 模板注釋支持多行,模板注釋在生成編譯緩存文件后會自動刪除,這一點和Html的注釋不同。 更多的關于模板引擎以及標簽的詳細用法參考[ThinkPHP5.1手冊的模板章節](http://www.hmoore.net/manual/thinkphp5_1/354069)。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看