31
2012-12

thinkphp模板标签如何支持PHP原生态if else的写法

前段时间做的一个客户网站,因为使用了thinkphp。但是在使用过程中,发现不支持php原始的if else 标签。但是他自身也支持if标签,但是不是自己想要的那个效果,于是google了下,也没什么结果。有天在国外论坛闲逛的时候发现一篇文章实现原理和这个差不多。就拿到这里实现了下,实现了这个功能。 1.大家打开thinkphp 的目录,找到

ThinkPhp/Lib/Template/ThinkTemplate.class.php

大致在thinkphp3.0里面该文件442-448行那里,下面是修改之前的代码:

}elseif('-' == $flag || '+'== $flag){ // 输出计算
    return  '';
}elseif(':' == $flag){ // 输出某个函数的结果
    return  '';
}elseif('~' == $flag){ // 执行某个函数
    return  '';
}


下面是新加入的对PHP标签if 和 else的逻辑处理,具体代码如下:

//新添加支持if标签
}elseif(substr($tagStr,0,3) =='if '){
    return '';
}elseif(substr($tagStr,0,7) =='elseif '){
    return '';
}elseif(substr($tagStr,0,4) =='php '){
    return '';
}elseif($tagStr =='else'){
    return '';
}elseif($tagStr =='/if'){
    return '';
    //en

这是添加后的代码。 其实就是判断 $tagStr这个。 亲们去代码里面实现下。咱们先去Runtime看下是不是添加的已经支持了呢

{if $userinfo[username]}
<li class="list"><a href="__APP__/user/logout">退出</a></li>
<li class="list"><a href="__APP__/User/">用户名: {$userinfo['username']} </a></li>
{else}
<li><a href="__APP__/User/login">登陆</a></li>
<li><a href="__APP__/User/regiest">注册</a></li>
{/if

上面是模板文件里的代码,来看Runtime Cach里面解析之后的代码是什么样子。

<?php if($userinfo[username]) : ?>
<li class="list"><a href="__APP__/user/logout">退出</a></li>
<li class="list"><a href="__APP__/User/">用户名: 
<?php echo ($userinfo['username']); ?> </a></li>
<?php else : ?>
<li><a href="__APP__/User/login">登陆</a></li>
<li><a href="__APP__/User/regiest">注册</a></li>
<?php endif; ?>

经过Tp的解析,就是我们经常看到的PHP模式了。现在好多基于Thinkphp开发的程序,都对Thinkphp的模版解析做了另外的处理,Thinkphp做的也不错,只不过是用户习惯原生态写法而已。

本文摘自PHP乐知博客地址:http://tech.42xiu.com/thinkphp-tag-if-else.html



除非注明,文章均为史亚永原创,欢迎转载!转载请注明本文地址,谢谢。

本文地址:http://www.shiyayong.cn/post/84.html

评论列表:

2  木马随风转  2012-12-31 16:16:38 回复该留言  IP:221.6.14.82
还有不少不太懂的
  茶馆老板  2012-12-31 16:20:35 回复该留言  IP:124.205.133.34
这个thinkphp我也只搞过一次,好久没弄了,忘得也差不多了,这次来温习一下
茶馆老板
木马随风转
1  老邦  2012-12-31 14:31:40 回复该留言  IP:61.140.117.117
有用的,学习学习。
  茶馆老板  2012-12-31 14:48:49 回复该留言  IP:124.205.133.34
莫非你也是做php程序的吗?那有空多交流下哦,互相学习
  老邦  2012-12-31 14:50:53 回复该留言  IP:61.140.117.117
也就是瞎搞搞,完全自学。呵呵
  茶馆老板  2012-12-31 15:44:11 回复该留言  IP:124.205.133.34
没事,互相学习呗,多交流下,来个无师自通
茶馆老板
老邦
茶馆老板
老邦

发表评论:

(设置个性头像)

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

无觅相关文章插件,快速提升流量