Qstyle 8.0.0 更新
增加{# 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}" 静态引入资源, 支持图片, css, js, ico.
"// TODO: 需要标注的信息" 新版本支持todo写法.分号为结束符号
"// BUG: 需要标注的bug信息" 新版本支持bug写法. 分号为结束符号
"{__my.jpg}" 支持这样引入文件, 不需要关心路径.
* 另外支持CSS, JS引入时套入模板语法. 引入路径将被改变.
?>
Qstyle 第八步
<?php
include('./include/Qstyle.class.php');
$Qstyle = new Qstyle();
# 以下配置为默认, 可以实例化后自行修改.
$Qstyle->templates_new = [true|false]; //设置当次更新, 系统更新可强制配置为true;
$Qstyle->templates_postfix = '.html'; //模板后缀;
$Qstyle->templates_var = 'All'; //变量获取模式, 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.0046820640563965 Qstyle 8.0.0 / 更新次数: 3