Copyright(c) DoYouHaoBaby.NET All Rights Reserved.
如果觉得上面的标签都无法满足条件判断要求的话,我们还可以使用if标签来定义复杂的条件判断。系统支持代码版本if和node版
本的if。其中node版本功能最为强大,当然,如果是简单的判断,你可以代码版本。
例如:
- {~$nId=1}
- {~$sDescription='青春是打开了就合不上的书,人生是踏上了就回不了头的路,爱情是扔出了就收不回的赌注。'}
- <if condition="($nId eq 1) OR ($nId gt 100) ">{$sDescription}
- <elseif condition="$nId eq 2" />two?
- <else />other?
- </if>
程序运行后的编译PHP 代码:
- <?php !defined('DYHB_PATH') && exit; /* DoYouHaoBaby Framework 模板缓存文件 生成时间:2002-01-12 02:15:35 */ ?>
- <?php $nId=1 ; ?>
- <?php $sDescription='青春是打开了就合不上的书,人生是踏上了就回不了头的路,爱情是扔出了就收不回的赌注。' ; ?>
- <?php if(($nId == 1) OR ($nId > 100) ) :?> <?php echo( $sDescription ); ?>
- <?php elseif( $nId == 2 ): ?>two?
- <?php else: ?>other?
- <?php endif; ?>
如图:

程序运行后结果如下:
- 青春是打开了就合不上的书,人生是踏上了就回不了头的路,爱情是扔出了就收不回的赌注。
如图:

在condition属性中可以支持eq等判断表达式 ,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:
- {~$nId=2}
- <if condition="$nId < 5 "> 这是错误的语法,请修正!
- <else /> error
- </if>
程序编译后的PHP 代码:
- <?php !defined('DYHB_PATH') && exit; /* DoYouHaoBaby Framework 模板缓存文件 生成时间:2002-01-12 02:22:11 */ ?>
- <?php $nId=2 ; ?>
- <?php if($nId < 5 ) :?> 这是错误的语法,请修正!
- <?php else: ?> error
- <?php endif; ?>
如图:

程序运行结果:
- 这是错误的语法,请修正!
如图:

看似正确的,确实这是正确的,那么我们改一下:
- {~$nId=2}
- <if condition="$nId > 5 "> 这是错误的语法,请修正!
- <else /> error
- </if>
程序运行后编译PHP 代码如下:
- <?php !defined('DYHB_PATH') && exit; /* DoYouHaoBaby Framework 模板缓存文件 生成时间:2002-01-12 02:26:46 */ ?>
- <?php $nId=2 ; ?>
- <?php if("$nId) :?> 5 "> 这是错误的语法,请修正!
- <?php else: ?> error
- <?php endif; ?>
如图:

程序运行结果,抛出异常:
- 因为是错误的语法,程序编译后的代码出错,抛出异常。
如图

必须改成:
- {~$nId=3}
- <if condition="$nId lt 5 "> 乖啊,正确了。送句哲理性的话给你:“唱情歌的歌手很多从未爱过,爱过就不会唱得这么陶醉了。”。
- <else /> 你有意见?
- </if>
程序运行后的编译PHP 代码:
- <?php !defined('DYHB_PATH') && exit; /* DoYouHaoBaby Framework 模板缓存文件 生成时间:2002-01-12 02:32:49 */ ?>
- <?php $nId=3 ; ?>
- <?php if($nId < 5 ) :?> 乖啊,正确了。送句哲理性的话给你:“唱情歌的歌手很多从未爱过,爱过就不会唱得这么陶醉了。”。
- <?php else: ?> 你有意见?
- <?php endif; ?>
如图:

程序运行后结果如下:
- 乖啊,正确了。送句哲理性的话给你:“唱情歌的歌手很多从未爱过,爱过就不会唱得这么陶醉了。”。
如图:

除此之外,我们可以在condition属性里面使用php代码,例如:
- {~$arrProgram['name']='DoYouHaoBaby'}
- <if condition="strtoupper($arrProgram['name']) eq 'DOYOUHAOBABY' "> The DoYouHaoBaby PHP Framework | 代码行云流水,开发如此简单{ NOT TM,BUT TMD }
- <else /> NoBody?
- </if>
程序运行后的编译PHP 代码:
- <?php !defined('DYHB_PATH') && exit; /* DoYouHaoBaby Framework 模板缓存文件 生成时间:2002-01-12 02:38:55 */ ?>
- <?php $arrProgram['name']='DoYouHaoBaby' ; ?>
- <?php if(strtoupper($arrProgram['name']) == 'DOYOUHAOBABY' ) :?> The DoYouHaoBaby PHP Framework | 代码行云流水,开发如此简单{ NOT TM,BUT TMD }
- <?php else: ?> NoBody?
- <?php endif; ?>
如图:

程序运行结果:
- The DoYouHaoBaby PHP Framework | 代码行云流水,开发如此简单{ NOT TM,BUT TMD }
如图:

condition属性可以支持点语法、多维数组和多维对象语法,例如:
自动判断$arrProgram变量是数组还是对象
- {~$arrProgram['name']='DoYouHaoBaby'}
- <if condition="$arrProgram.name eq 'DoYouHaoBaby' "> The DoYouHaoBaby PHP Framework | The DoYouHaoBaby Company !
- <else /> other framework?
- </if>
程序运行后的编译PHP 代码:
- <?php !defined('DYHB_PATH') && exit; /* DoYouHaoBaby Framework 模板缓存文件 生成时间:2002-01-12 02:47:33 */ ?>
- <?php $arrProgram['name']='DoYouHaoBaby' ; ?>
- <?php if((is_array($arrProgram)?$arrProgram["name"]:$arrProgram->name) == 'DoYouHaoBaby' ) :?> The DoYouHaoBaby PHP Framework | The DoYouHaoBaby Company !
- <?php else: ?> other framework?
- <?php endif; ?>
如图:

程序最后运行结果如下:
- The DoYouHaoBaby PHP Framework | The DoYouHaoBaby Company !
如图:

或者知道$arrProgram变量是对象
- <php>
- class test{ public $name='DoYouHaoBaby'; }
- $arrProgram = new test( );
- </php>
- <if condition="$arrProgram:name eq 'DoYouHaoBaby' "> The {$arrProgram:name} Framework
- <else /> other Framework ?
- </if>
程序运行后的编译PHP 代码如下:
- <?php !defined('DYHB_PATH') && exit; /* DoYouHaoBaby Framework 模板缓存文件 生成时间:2002-01-12 02:55:15 */ ?>
- <?php
- class test{ public $name='DoYouHaoBaby'; }
- $arrProgram = new test( );
- ?>
- <?php if($arrProgram->name == 'DoYouHaoBaby' ) :?> The <?php echo( $arrProgram->name ); ?> Framework
- <?php else: ?> other Framework ?
- <?php endif; ?>
如图:

程序最后运行结果如下:
- The DoYouHaoBaby Framework
如图:

说明:elseif 的条件和if 一模一样,你可以参考if 的用法使用。
由于if 标签的condition属性里面基本上使用的是php语法,尽可能使用判断标签和Switch标签 会更加简洁,原则上来说,能够用switch和比较标签解决的尽量不用if标签完成。因为switch和比较标签可以使用变量调节器和系统变量。如果某些特殊的要求下面,IF标签仍然无法满足要求的话,可以使用原生php代码或者PHP标签来直接书写代码。
程序支持简洁的代码版本的语法:
我们可以在模板中使用如下:
- {~$nId = 1}
- {if $nId==1}
- 我的值为1,我为if下的内容。
- {elseif $nId==2}
- 我的值为2,我为elseif下的内容。
- {d*else}
- 我的值为{$nId},我不是谁的谁!
- {/if}
程序运行后编译PHP 代码如下:
- <?php !defined('DYHB_PATH') && exit; /* DoYouHaoBaby Framework 模板缓存文件 生成时间:2002-01-12 03:05:22 */ ?>
- <?php $nId = 1 ; ?>
- <?php if( $nId==1 ) :?>
- 我的值为1,我为if下的内容。
- <?php elseif( $nId==2 ) :?>
- 我的值为2,我为elseif下的内容。
- <?php else: ?>
- 我的值为<?php echo( $nId ); ?>,我不是谁的谁!
- <?php endif; ?>
如图:
程序运行结果如下:
- 我的值为1,我为if下的内容。
如图:

说明:为什么d*else的语法,因为else 和elseif冲突,引起系统解析错误。
代码版本的if和elseif变量支持‘.’、‘:’、‘->’,比如我们在模板中写下如下的代码:
- <php>$arrList = array(
- 'demo'=>array(
- 'sub_demo'=>3,
- 'sub_demo2'=>array(
- 'name'='DoYouHaoBaby',
- ),
- ),
- );</php>
- {if $arrList['demo']['sub_demo']==3}
- 我是数组的元素$arrList['demo']['sub_demo'],如果我等于3,我就被输出来!
- {/if}<br>
- {if $arrList.demo.sub_demo2.name = 'DoYouHaoBaby'}
- 我是对象的属性或者数组的元素,如果我的值等于DoYouHaoBaby,我就被输出!<br>
- The DoYouHaoBaby Company !
- {/if}
- <php>
- class test{ public $name='DoYouHaoBaby'; }
- $oObj = new test( );
- </php>
- {if $oObj:demo = 'DoYouHaoBaby'}
- 我是对象的属性,如果我的值等于DoYouHaoBaby,我就被输出!<br>
- The DoYouHaoBaby Company Maybe in the future!
- {/if}
程序运行后的PHP 代码如下:
- <?php !defined('DYHB_PATH') && exit; /* DoYouHaoBaby Framework 模板缓存文件 生成时间:2002-01-12 03:48:53 */ ?>
- <?php $arrList = array(
- 'demo'=>array(
- 'sub_demo'=>3,
- 'sub_demo2'=>array(
- 'name'=>'DoYouHaoBaby',
- ),
- ),
- ); ?>
- <?php if( $arrList['demo']['sub_demo']==3 ) :?>
- 我是数组的元素$arrList['demo']['sub_demo'],如果我等于3,我就被输出来!
- <?php endif; ?><br><br>
- <?php if( is_array( $arrList ) ? $arrList['demo']['sub_demo2']['name'] = 'DoYouHaoBaby' : $arrList->demo->sub_demo2->name = 'DoYouHaoBaby' ) :?>
- 我是对象的属性或者数组的元素,如果我的值等于DoYouHaoBaby,我就被输出!<br>
- The DoYouHaoBaby Company !
- <?php endif; ?><br><br>
- <?php
- class test{ public $name='DoYouHaoBaby'; }
- $oObj = new test( );
- ?>
- <?php if( $oObj->name = 'DoYouHaoBaby' ) :?>
- 我是对象的属性,如果我的值等于DoYouHaoBaby,我就被输出!<br>
- The DoYouHaoBaby Company Maybe in the future!
- <?php endif; ?>
如图:

程序最后 运行结果如下:
- 我是数组的元素$arrList['demo']['sub_demo'],如果我等于3,我就被输出来!
- 我是对象的属性或者数组的元素,如果我的值等于DoYouHaoBaby,我就被输出!
- The DoYouHaoBaby Company !
- 我是对象的属性,如果我的值等于DoYouHaoBaby,我就被输出!
- The DoYouHaoBaby Company Maybe in the future!
如图:

说明:elseif 标签同样和if 是相同的语法,你可以参考使用。
如果我们需要使用静态函数来解析,我们在模板中写下如下的代码:
- {if G+U( 'index/index' )}
- {:G::U( 'index/index' )}
- {/if}
程序编译后:
- <?php !defined('DYHB_PATH') && exit; /* DoYouHaoBaby Framework 模板缓存文件 生成时间:2011-11-13 04:29:56 */ ?>
- <?php if( G::U( 'index/index' ) ) :?>
- <?php echo( G::U( 'index/index' ) );?>
- <?php endif; ?>
程序运行结果如下:
/home/index.php/index/index
好了,if标签就完了,OK !
