官方下载 - 社区讨论
演示功能: 首页 自动定位文件 block应用 & ajax应用 css/js应用 模板加载应用 其它基础 资源静态引入 2
行业更快
避免崩溃
源码整洁
最佳兼容
减轻压力

Qstyle 7.5.3 更新


    增加{# dir/myname.jpg} 静态引入资源语法. 支持 __name.jpg 自动搜索及完整的路径.
    增加{qstyle debug} 可以调试模板的解析. 
    增加{ABC[var][$sex]} 常量数组的支持. 

Qstyle 第一步


    <?php 
    
# 开始前, 我们先了解一下几个概念:
    
     //引入类库文件, 类库文件可换成任意路径。
    
include('./include/Qstyle.class.php');
    
//模板引擎实例;
    // 也可带入参数 new Qstyle('路径','路径','路径','路径'); 可直接把模板路径带入其中. 最后面的路径先搜索.
    
$Qstyle = new Qstyle();
 
    
// load方法第一个参数是模板文件名,模板文件将从你设置的模板路径中寻找.
    // 参数同时也支持绝对路径。即读取指定的模板文件。类似: $Qstyle->load('./dir/phpnew.tpl');
    
$Qstyle->load('phpnew');

Qstyle 第二步


    <?php 
    
// php执行代码
    
$new_var '我是新的变量';
    
     
//引入类库文件, 等php执行完成后再引入模板类库即可。以下三行,可自行封装成函数或者类方法.
    
include('./include/Qstyle.class.php');
    
//模板引擎实例;
    
$Qstyle = new Qstyle();
    
    
//最后输出页面. phpnew.html 模板中写代码{$new_var}即可显示变量内容。非常方便。
    
$Qstyle->load('phpnew');

Qstyle 第三步


    <?php 
    
include('./include/Qstyle.class.php');
    
$Qstyle = new Qstyle();
    
    
// 普通赋值.
    
$new_var '我是新的变量';
    
// 兼容smarty的模式, 如果你以前学过, 仍然可以使用.
    
$Qstyle->assign('user_pay',15.26);
    
    
# 两种模式可以同时使用, 互不影响.
    //最后输出页面. phpnew.html 模板中写代码{$new_var},{$user_pay} 即可显示两个变量内容。
    
    
$Qstyle->load('phpnew'); 

Qstyle 第四步


    <?php 
    
    
# 非常简洁变通的调用方法. 一个方法实现所有功能.
    # 同时支持字符串解析.
    
    # 变通调用方式
    
$Qstyle->load('phpnew');
    
    
# 假如需要对整个模板目录深层搜索, 可以用到 __header的方式.
      // $Qstyle->load('__phpnew');
    
    # 也支持目录引用, 以模板目录为基点再寻找目录文件.
      // $Qstyle->load('./music/index');
    
    //可以选择用字符方式来加载, 字符串的写法跟普通模板完全一样.
      // $Qstyle->load(file_get_contents('./Data/default/phpnew.html'));
    
    # 字符串加载, 支持多次调用.(无解析工作的纯字符串尽量别用load解析, 没任何意义)
     // $usercpu = 'my name';
     // $Qstyle->load('<br />我是纯字符的解析 ={$usercpu}');
    
    # 第二个参数布尔值将返回源代码文件的路径.
      
$Qstyle->load('<br />我是纯字符的解析 ={$usercpu}'true);
    
    
# 第二个参数字符串将调用block的内容
      
$Qstyle->load('phpnew''blockname');  

Qstyle 第五步


    <?php 
    
    
# load方法 字符串 & block 加载
    
    # 变通调用方式可能是以下两种, 第二个参数true时, 返回路径.
    
$Qstyle->load('phpnew');
    
$Qstyle->load('d:\xx');  //绝对路径 
    
$Qstyle->load('./music/phpnew'); // 相对路径 (这个相对是模板的根目录开始计算)
    
$Qstyle->load('__phpnew');  // 假如你不知道文件放在多模板目录的位置, 可以用 __文件名 来实现自动寻找.
    
    # 为了解决ajax的简单返回值, 比如一串字符, 里面又套上几个变量, 假如json返回到前端, 处理起来就复杂得多. 
    
$PHPnew->load('<span>{$a}</span><span>{$b}</span><span>{$c}</span><span>{$d}</span>');
      
// 这样是否会感觉舒服很多? 当第二个参数传入true时, 将返回php源码.
      
    # 不过, 有时ajax需要返回一大块div,或者table串, 那和字符方式也比较难控制, 平时我们就需要创建一个文件, 然后用load来加载, 现在不需要这么复杂了.
    
$Qstyle->load('phpnew','_ajax'); // ('模板名','bolck名'),
      // 这一步骤将使得平时少用的block标签疯狂起来. 你可以在模板中定义多个block块, 既然平时不用, 也没关系, 它默认不会显示. 当有特殊需求时, 即可以用load block方式调用起来. 
      // 这方法的改进,是为了让ajax操作更方便.
    
    # 既然说了block, 那也详细讲讲. 以下是简单的一段block.
    
{block abc}<span>{$val}</span>{/block}  
      
// 如果没人调用, 那它不会有所显示. 调用的方法很简单, 把block的名字括号起来即可. 如下
    
<!--{loop $arr $val}-->
        {
abc}
    <!--{/
loop}-->
      
// 循环体中的代码会被block继承起来. 这样多块相同的模板, 便可以用block来处理.
    
    # 同样的道理, 假如在ajax php中只想调用block, 那就
        
$Qstyle->load('phpnew','abc');
    
       

Qstyle 第六步


    <?php 
    
include('./include/Qstyle.class.php');
    
$Qstyle = new Qstyle();
    
// 定义一个数组.
    
$new_arr = array('yuan'=>'1200','tom'=>'1300','lisa'=>'1500')
    
    
//phpnew.html 模板代码:
    
<!--{if is_array($new_arr) === true}-->
        
$new_arr是数组.
    <!--{else}-->
        
$new_arr不是数组.
    <!--{/if}-->
    
    
$Qstyle->load('phpnew'); 

Qstyle 第七步


    <?php
          
# 以下代码规则是针对html模板文件而讲解.
           
"{qstyle debug}" 此语法用来调试模板引擎的
          
"<?php ?>" 直接写法此方法可像写php一样方便.
          
"{eval echo 111}"     智能模式.简单运行php代码;
          
"{block name}{/block}" block代码运行块当你写完一块后后续可以多次调用;
          
"{LF}" 为提示产生换行符\n\r
          
"{lang zn}" 语言模板语法可通过方法 set_language($key$val实现传入语言包.
          
"{load header}" 普通常用的模板文件相互引入;
          
"{load $footer}"    模板文件相互引入的过程支持变量;
          
"{loads header}" 模板文件相互引入支持静态引入;
          
"{# myname.jpg}" 静态引入资源支持图片cssjsico.
          
"// TODO: 需要标注的信息" 新版本支持todo写法.分号为结束符号
          
"// BUG: 需要标注的bug信息" 新版本支持bug写法分号为结束符号
          
"{__my.jpg}" 支持这样引入文件不需要关心路径.
          * 
另外支持CSSJS引入时套入模板语法引入路径将被改变.
    
?>
    

Qstyle 第八步


    <?php
    
include('./include/Qstyle.class.php');
    
$Qstyle = new Qstyle();
    
    
# 以下配置为默认, 可以实例化后自行修改.
    
$Qstyle->templates_new = [true|false]; //设置当次更新, 系统更新可强制配置为true;
    
$Qstyle->templates_postfix '.html'//模板后缀;
    
$Qstyle->templates_var     '[All|ASSIGN]';   //变量获取模式, All,ASSIGN;
    
$Qstyle->templates_auto = [true|false]; //自动更新模板;
    
$Qstyle->templates_caching '.php'//缓存后缀;
    
$Qstyle->templates_space = [true|false]; //清除无意义字符
    
$Qstyle->templates_isdebug     = [true|false]; // 是否启用日志
    
$Qstyle->templates_ankey   false;        // 安全码
    
$Qstyle->templates_replace = array(); //用于智能更新,可以将模板中的内容直接替换;
    
    # 或者用方法来调用
    
set_templates_type          // 变量获取模式, All,ASSIGN;
    
set_templates_suffix        // 第一个参数模板后缀, 第二个参数缓存后缀
    
set_templates_auto          // [true|false] 自动更新模板;
    
set_templates_space         // [true|false] 清除无意义字符
    
set_templates_isdebug       // [true|false] 是否启用日志,本功能将显示模板运作过程.
    
set_templates_oncenew       // [true|false] 设置当次更新, 每次刷新均解析模板.
    
set_templates_ankey         // 安全码,此码影响缓存文件的生成算法.
    
    
set_templates_path          // 设置模板路径, 多个路径可调用多次. 系统自动从最后设置的路径开始往回寻找.
                       // 项目架构中, 建议不要超过三个模板目录, 以免路径规划混乱.
    
set_cache_path              // 设置缓存路径 支持一个路径.
    
set_auto_path             // 设置自动搜索目录路径, 此目录影响到自动文件匹配功能, 如{__a.jpg} 这类写法的路径搜索.
    
    
set_templates_replace       // 设置替换模板数据的方法, ['div','newdiv'], 模板将会把所有的div字样替换成newdiv
    
    
set_static_assign           // 设置静态文件静态变量, 此用于CSS, JS等静态文件. 
    
set_language                // 设置语言包. ['key','val'] 方法使用如 assign
    
    
?>
    

Qstyle 第九步


    <?php 
    
include('./include/Qstyle.class.php');
    
$Qstyle = new Qstyle();
    
$var 'Qstyle 模板引擎';
    
$Qstyle->load('phpnew');
    
    
# 如果你需要全局查看, 可以在load调用后一行进行实例变量打印,
    
print_r($Qstyle);
    

Qstyle 中级A


    <?php 
    
include('./include/Qstyle.class.php');
    
$Qstyle = new Qstyle();
    
#建议使用assign方法设置变量. 会让架构整体更明了, 知道哪些变量是释放到模板的.
    
    // 关闭系统自动捕捉全局变量
    
$Qstyle->templates_var 'assign'// 可省略步骤!
    
$Qstyle->assign('vars'100); // 设置$vars为100;
    
    // 当然, 你可以进行数组释放变量
    
$arr = array('vars'=>100,   'vardemo'=> 200);
    
$Qstyle->assign($arr);
 
    
# 即可释放出两个变量. 在模板{$vardemo} 即可显示200; 方法可以使用多次.
    
    
$Qstyle->load('phpnew');

Qstyle 中级B


    <?php 
    
include('./include/Qstyle.class.php');
    
$Qstyle = new Qstyle();
    
# 静态文件自动匹配功能. 为了解决图片, js, css文件路径问题而生.

    // 首先你需要告诉引擎, 图片, js, css文件放在哪个目录, 即静态文件.
    // 使用方法 set_auto_path 来设置路径, 调用多次可加载为多个目录.
    
$Qstyle->set_auto_path('./Static/');
    
# 以站点根目录为起点寻找Static目录, 方法会自动搜寻目录中的所有文件, 无论里面放了多少层目录, 它都会找到. 
    # 方法可以调用多次, 以支持多个目录搜索. 优先权跟模板目录一样以倒序为标准. 引擎以这样来适应叠加目录.
    
    // 当多个目录里面保存了相同的文件时, 系统以找到之后即停止搜索的原理解析搜索.
    // 自动搜索功能仅在模板解析时处理一次, 压力小, 速度快.
    // 接着在模板中就可以用以下两种方法使用此功能. {__demo.jpg} 即可以匹配到demo的相对路径. html, css, js中均可以这样使用, 以下是一些示例.
    
    
'<style>{__comon.css}</style>'   # 引入comon.css 缓存文件, 是缓存文件.
    
'<img src="{__1.jpg}" />'        # html中引入图片的快速写法,
    
'<img src="{__{$str}.jpg}" />'   # html中引入图片支持变量写法,
    
'<div style="background: url({__bg.jpg});">div string</div>' # 背景图片引入.

    # 在引擎环境中, 用{__file.js} 引入文件将大大改善混乱问题, 路径问题交给程序解决吧.
    
    # !{load } 由于模板语法load, 通常大家都不会写后缀名, 所以模板语法不能使用自动匹配路径语法!
    
$Qstyle->load('phpnew');

Qstyle 中级C


    <?php 
    
include('./include/Qstyle.class.php');
    
$Qstyle = new Qstyle();
    
    
# 为了解决模板与css, js相独立的问题, 模板引擎增加了静态文件解析功能. 所有的引入文件js, css都将具有语法解析功能.
    # 静态文件除了可解析自动路径外, 也支持简单的变量解析了.
    # 为什么不像模板一样, 全部解析语法? 因为css, js文件解析后, 需要保存为相同的后缀, 它是不经过php的, 所以无法释放php代码. 全部解析成静态的值.
    # 所以, set_static_assign 设置变量的方法由此而产生, 建议项目中用这个方法设置的值,一直保持不变.理解为静态变量. css, js里面默认支持常量,也不失为一种方法.
    
    # 建议手工释放静态文件中的变量. 此步也可省略, 它会自动继承全局assign. 全局assign的可变性将对结果有所影响.
    
$Qstyle->set_static_assign('color','red');
    
$Qstyle->set_static_assign(array('keys'=>'red'));  // {$keys}
    
$Qstyle->set_static_assign('color',array('keys'=>'red'));  // $color['keys'];
    
    # css, js 文件如普通模板一样写 {$color} {$color['keys']} 都可以得到 red的值. 仅此标准.
    # css, js 文件中可以取得全局常量. {DEFINE}  跟普通模板语法一致.
    # css, js 文件中可以{__a.jpg} 取得静态文件路径, 见上一步详细.
    
    # 解析后的静态文件被写入在缓存目录中.
    
$Qstyle->load('phpnew');

Qstyle 中级D


    <?php 
    
# 公共方法如下: 
    /*
    [2] => display              显示模板信息,重要方法
    [3] => load                 同上
    [4] => assign               赋值变量.
    [5] => set_templates_type   设置变量取值模式,可选参数:All,ASSIGN;
    [6] => set_templates_suffix 设置后缀, 第一个参数是模板后缀, 第二个参数是缓存后缀
    [7] => set_templates_auto   设置是否自动更新
    [8] => set_templates_space  设置是否清除无意义字符.
    [9] => set_templates_isdebug 设置是否监控日志.
    [10] => set_templates_oncenew  设置当次更新.
    [11] => set_templates_ankey    设置安全码.防止用户猜到缓存文件名.
    [12] => set_templates_path     设置模板目录, 方法调用多次即叠加路径. 注意顺序.
    [13] => set_templates_replace  设置全局替换数组.
    [15] => set_cache_path         设置缓存目录.
    [16] => set_static_assign      设置静态变量, 主要用于css, js
    [17] => set_language           设置语言包数据.
    [18] => set_auto_path          设置自动搜索目录.
    [20] => cache_dele             删除缓存, 默认全部删除.
    */

Qstyle 中级E


    <?php 
    
    
# 非常简洁变通的调用方法. 一个方法实现所有功能.
    # 同时支持字符串解析.
    
    # 变通调用方式
    
$Qstyle->load('phpnew');
    
    
# 假如需要对整个模板目录深层搜索, 可以用到 __header的方式.
      // $Qstyle->load('__phpnew');
    
    # 也支持目录引用, 以模板目录为基点再寻找目录文件.
      // $Qstyle->load('./music/index');
    
    //可以选择用字符方式来加载, 字符串的写法跟普通模板完全一样.
      // $Qstyle->load(file_get_contents('./Data/default/phpnew.html'));
    
    # 字符串加载, 支持多次调用.(无解析工作的纯字符串尽量别用load解析, 没任何意义)
     // $usercpu = 'my name';
     // $Qstyle->load('<br />我是纯字符的解析 ={$usercpu}');
    
    # 第二个参数布尔值将返回源代码文件的路径.
      
$Qstyle->load('<br />我是纯字符的解析 ={$usercpu}'true);
    
    
# 第二个参数字符串将调用block的内容
      
$Qstyle->load('phpnew''blockname');  

Qstyle 高级A


    <?php 
    
    
# load方法 字符串 & block 加载
    
    # 变通调用方式可能是以下两种, 第二个参数true时, 返回路径.
    
$Qstyle->load('phpnew');
    
$Qstyle->load('d:\xx');  //绝对路径 
    
$Qstyle->load('./music/phpnew'); // 相对路径 (这个相对是模板的根目录开始计算)
    
$Qstyle->load('__phpnew');  // 假如你不知道文件放在多模板目录的位置, 可以用 __文件名 来实现自动寻找.
    
    # 为了解决ajax的简单返回值, 比如一串字符, 里面又套上几个变量, 假如json返回到前端, 处理起来就复杂得多. 
    
$PHPnew->load('<span>{$a}</span><span>{$b}</span><span>{$c}</span><span>{$d}</span>');
      
// 这样是否会感觉舒服很多? 当第二个参数传入true时, 将返回php源码.
      
    # 不过, 有时ajax需要返回一大块div,或者table串, 那和字符方式也比较难控制, 平时我们就需要创建一个文件, 然后用load来加载, 现在不需要这么复杂了.
    
$Qstyle->load('phpnew','_ajax'); // ('模板名','bolck名'),
      // 这一步骤将使得平时少用的block标签疯狂起来. 你可以在模板中定义多个block块, 既然平时不用, 也没关系, 它默认不会显示. 当有特殊需求时, 即可以用load block方式调用起来. 
      // 这方法的改进,是为了让ajax操作更方便.
    
    # 既然说了block, 那也详细讲讲. 以下是简单的一段block.
    
{block abc}<span>{$val}</span>{/block}  
      
// 如果没人调用, 那它不会有所显示. 调用的方法很简单, 把block的名字括号起来即可. 如下
    
<!--{loop $arr $val}-->
        {
abc}
    <!--{/
loop}-->
      
// 循环体中的代码会被block继承起来. 这样多块相同的模板, 便可以用block来处理.
    
    # 同样的道理, 假如在ajax php中只想调用block, 那就
        
$Qstyle->load('phpnew','abc');
    
       

分享工作室 执行时间: 0.0091211795806885 Qstyle 7.5.3 / 更新次数: 3

页面内存: 350.45 kb; 最高占用: 497.08 kb


Notice: Qstyle 初始化开始.....

Notice: 模板文件信息: Data/default/phpnew.html,Data/default/header.html,Data/default/footer.html
Notice: 缓存文件信息:
 ./Data/cache_tpl/phpnew_c4bef72851b2fac534d5bd5ffe08fcd6.php
 ./Data/cache_tpl/header_1852b5f72d4bff06b2c1615f88b59981.php
 ./Data/cache_tpl/footer_1a7eefbddbbb44877c408ff512829a02.php
Notice: 自动匹配路径: testing/ * 在此目录或者子目录的文件都可以直接匹配
Notice: 语言数组数据:
Notice: 变量数组数据: 17
Notice: 静态变量数据: 0 * 主要用于CSS, JS等
Notice: block解析数据: 0

Notice: 模板更新次数: 3
Notice: 加载视图次数: 3
Notice: 写入文件次数: 3
Notice: 全局替换次数: 0
Notice: 全局设置: 模板后缀:'.html'; 缓存后缀: '.php'; 变量模式: All; 自动更新: true; 当次强制更新: true; 清除无意义字符: false; 安全码: ''

Notice: 模板目录已经被指定:./Data/default/, Data/default/, testing/ (验证存在)
Notice: 静态文件匹配自动目录: testing/ (验证存在)

Notice: 1 次模板调用开始.....
Notice: 模板文件自动搜索到路径: Data/default/phpnew.html
Notice: templates_new 自动更新已经开启!
Notice: 模板解析开始... 内容共计: 2314 字节
Notice: 解析模板细节: // TODO|BUG TODO,BUG 描述解析次数:0
Notice: 解析模板细节: 引入文件: header
Notice: 解析模板细节: 引入文件: footer
Notice: 解析模板细节: {load name} 解析次数:2
Notice: 解析模板细节: {block name} block块解析次数:0
Notice: 解析模板细节: {__name} 自动匹配路径解析次数:0
Notice: 解析模板细节: <link><style> CSS路径自动匹配路径解析次数:0
Notice: 解析模板细节: <script> JS路径自动匹配路径解析次数:0
Notice: 解析模板细节: {eval phpcode} eval运行php代码解析次数:0
Notice: 解析模板细节: <?php code ?> 原生态php代码解析次数:0
Notice: 解析模板细节: {lang name} 语言包代码解析次数:0
Notice: 解析模板细节: {reg|1|0} 二元判断代码解析次数:0
Notice: 解析模板细节: {$var} 变量,数组代码解析次数:17
Notice: 解析模板细节: {if else /if} if流程判断代码解析次数:0
Notice: 解析模板细节: {loop all} 循环输出代码解析次数:0
Notice: 解析模板细节: {CONST} 常量代码解析次数:0
Notice: 模板解析结束... 内容共计: 2724 字节
Notice: 文件写入成功: ./Data/cache_tpl/phpnew_c4bef72851b2fac534d5bd5ffe08fcd6.php
Notice: 第1次输出: phpnew.html & ./Data/cache_tpl/phpnew_c4bef72851b2fac534d5bd5ffe08fcd6.php

Notice: 2 次模板调用开始.....
Notice: 模板文件自动搜索到路径: Data/default/header.html
Notice: templates_new 自动更新已经开启!
Notice: 模板解析开始... 内容共计: 1566 字节
Notice: 解析模板细节: // TODO|BUG TODO,BUG 描述解析次数:0
Notice: 解析模板细节: {load name} 解析次数:0
Notice: 解析模板细节: {block name} block块解析次数:0
Notice: 解析模板细节: {__name} 自动匹配路径解析次数:1
Notice: 解析模板细节: <link><style> CSS路径自动匹配路径解析次数:0
Notice: 解析模板细节: <script> JS路径自动匹配路径解析次数:0
Notice: 解析模板细节: {eval phpcode} eval运行php代码解析次数:0
Notice: 解析模板细节: <?php code ?> 原生态php代码解析次数:0
Notice: 解析模板细节: {lang name} 语言包代码解析次数:0
Notice: 解析模板细节: {reg|1|0} 二元判断代码解析次数:1
Notice: 解析模板细节: {$var} 变量,数组代码解析次数:1
Notice: 解析模板细节: {if else /if} if流程判断代码解析次数:0
Notice: 解析模板细节: {loop all} 循环输出代码解析次数:0
Notice: 解析模板细节: {CONST} 常量代码解析次数:0
Notice: 模板解析结束... 内容共计: 1785 字节
Notice: 文件写入成功: ./Data/cache_tpl/header_1852b5f72d4bff06b2c1615f88b59981.php
Notice: 第2次返回路径: header.html & ./Data/cache_tpl/header_1852b5f72d4bff06b2c1615f88b59981.php

Notice: 3 次模板调用开始.....
Notice: 模板文件自动搜索到路径: Data/default/footer.html
Notice: templates_new 自动更新已经开启!
Notice: 模板解析开始... 内容共计: 185 字节
Notice: 解析模板细节: // TODO|BUG TODO,BUG 描述解析次数:0
Notice: 解析模板细节: {load name} 解析次数:0
Notice: 解析模板细节: {block name} block块解析次数:0
Notice: 解析模板细节: {__name} 自动匹配路径解析次数:0
Notice: 解析模板细节: <link><style> CSS路径自动匹配路径解析次数:0
Notice: 解析模板细节: <script> JS路径自动匹配路径解析次数:0
Notice: 解析模板细节: {eval phpcode} eval运行php代码解析次数:0
Notice: 解析模板细节: <?php code ?> 原生态php代码解析次数:2
Notice: 解析模板细节: {lang name} 语言包代码解析次数:0
Notice: 解析模板细节: {reg|1|0} 二元判断代码解析次数:0
Notice: 解析模板细节: {$var} 变量,数组代码解析次数:0
Notice: 解析模板细节: {if else /if} if流程判断代码解析次数:0
Notice: 解析模板细节: {loop all} 循环输出代码解析次数:0
Notice: 解析模板细节: {CONST} 常量代码解析次数:0
Notice: 模板解析结束... 内容共计: 356 字节
Notice: 文件写入成功: ./Data/cache_tpl/footer_1a7eefbddbbb44877c408ff512829a02.php
Notice: 第3次返回路径: footer.html & ./Data/cache_tpl/footer_1a7eefbddbbb44877c408ff512829a02.php

Notice: Qstyle 所有工作已经结束.....