php模板:PHP中的模板技术来源: 发布时间:星期四, 2009年2月12日 浏览:517次 评论:0
综述: 在多人开发大型PHP项目时模板技术非常有用它可以分开美工和员工作并且方便界面修改和完善;不仅如此利用模板技术我们还可以简单有效地定制或者修改站点现在我们将要以PHPLIB模板为例子讲述如何在PHP中应用模板技术 如何使用PHPLIB模板? 设我们有个模板, 名为UserTemp路径为/home/user_dir/user_temp/它内容如下: 你订购是:{Product} 大括号表示Product是个模板变量 然后我们编写如下: <?php \"template.inc\"; $user_product = \"随身听\"; $tmp = Template(\"/home/user_dir/user_temp/\"); // 创建个名为 $t 模板对象 $tmp->_file(\"FileHandle\",\"UserTemp.ihtml\"); // 设置句柄FileHandle = 模板文件 $tmp->_var(\"Product\",$user_product); // 设置模板变量Product=$user_product $tmp->parse(\"Output\",\"FileHandle\"); // 设置模板变量 Output = 分析后文件 $tmp->p(\"Output\"); // 输出 Output 值(我们分析后数据) ?> template.inc是PHPLIB中个文件我们用以便使用PHPLIB模板功能PHPLIB模板使用是面向对象设计所以我们可以用$tmp = Template(\"/home/user_dir/user_temp/\")创建个模板对象其参数是个路径(\"/home/user_dir/user_temp/\") 用来设置模板文件所在位置默认路径是PHP脚本所在目录 _file用来定义指向UserTemp.ihtml(PHPLIB模板模板文件名后缀为.ihtml )句柄\"FileHandle\"_var用来设置模板变量Product为$user_product值(即\"随身听\")parse思路方法会装入FileHandle(即UserTemp.ihtml)进行分析将所有在模板中出现\"{Product}\"替换成$user_product值(\"随身听\") 如何使用嵌套模板? 在上面例子中parse思路方法设置\"Output\"是个模板变量利用这点我们可以实现模板嵌套 比如我们有另外个模板(假设为UserTemp2)其内容是: 欢迎你亲爱朋友!{Output} 那么在分析的后其输出会是: 欢迎你亲爱朋友!你订购是:随身听 下面是更新后: <?php \"template.inc\"; $user_product = \"随身听\"; $tmp = Template(\"/home/user_dir/user_temp/\"); $tmp->_file(\"FileHandle\",\"UserTemp.ihtml\"); $tmp->_var(\"Product\",$user_product); $tmp->parse(\"Output\",\"FileHandle\"); $tmp->_file(\"FileHandle2\",\"UserTemp2.ihtml\");//设置第 2个模板句柄 $tmp->parse(\"Output\",\"FileHandle2\");//分析第 2个模板 $tmp->p(\"Output\"); ?> 很简单我们就不详细解释了这里有个窍门技巧:parse和p可以写成个pparse比如$tmp->pparse(Output\",\"FileHandle2) PHPLIB模板如何接受多组值? file和_var参数可以是关联(句柄作为索引模板文件作为值)这样模板就可以接受多个值比如: <?php …… $tmp->file(.gif' />(\"FileHandle\"=>\"UserTemp.ihtml\",\"FileHandle2\"=>\"UserTemp2.ihtml\")); $tmp->_var(.gif' />(\"Product\"=>\"随身听\",\"Product2\"=>\"电视机\")); …… ?> 如何给模板变量追加数据? 我们可以给parse和pparse提供第 3个参数(布尔变量)来给模板变量追加数据: <?php …… $tmp->pparse(\"Output\",\"FileHandle\",true); …… ?> 这样FileHandle被分析后就会被追加到Output变量值后面而不是简单替换 为什么要使用block机制? 比方说我们想要显示: 你订购是:随身听 电视机…… 用上面思路方法直接追加话可能显示出来是: 你订购是:随身听 你订购是:电视机 你订购是:…… 显然不符合我们要求那么如何有效解决这个问题呢?这里就要使用block机制 我们将上面模板文件UserTemp.ihtml修改下: 你订购是: <!-- BEGIN Product_List --> {Product} <!-- END Product_List --> 这样我们就定义了个名为\"Product_List\"block 相应为: <?php \"template.inc\"; $tmp= Template(\"/home/user_dir/user_temp/\"); $tmp->_file(\"FileHandle\",\"UserTemp.ihtml\"); $tmp->_block(\"FileHandle\",\"Product_List\",\"Product_Lists\"); //将文件中block替换成{Product_Lists} $tmp->_var(\"Product\",\"随身听\"); $tmp->parse(\"Product_Lists\",\"Product_List\",true); $tmp->_var(\"Product\",\"电视机\"); $tmp->parse(\"Product_Lists\",\"Product_List\",true); //具体使用中可以用和循环来做 $tmp->parse(\"Output\",\"FileHandle\"); $tmp->p(\"Output\"); ?> 现在输出就是我们想要结果了 1
相关文章读者评论
发表评论 |