The DoYouHaoBaby PHP Framework中文开发文档手册
Copyright(c) DoYouHaoBaby.NET All Rights Reserved.
[ 使用PHP 代码 ]

Php代码可以和标签在模板文件中混合使用,可以在模板文件里面书写任意的PHP语句代码 ,包括下面两种方式:
 


1:第一种是使用php标签:

我们可以在模板引擎中写下如下的代码:

  1. <php>echo 'Hello,world!';</php>   

程序运行后的编译PHP 代码如下:

  1. <?php !defined('DYHB_PATH') && exit; /* DoYouHaoBaby Framework 模板缓存文件 生成时间:2002-01-12 05:44:46  */ ?>   
  2. <?php echo 'Hello,world!'; ?>  

如图:


程序运行结果如下:

  1. Hello,world!  

如图:


2:第二种就是直接使用原始的php代码:

  1. <?php echo 'Hello,world!'; ?>   

程序编译后的PHP 代码如下:

  1. <?php !defined('DYHB_PATH') && exit; /* DoYouHaoBaby Framework 模板缓存文件 生成时间:2002-01-12 06:00:41  */ ?>   
  2. &lt;?php echo 'Hello,world!'; ?&gt;  

如图:

程序运行结果如下:

  1. <?php echo 'Hello,world!'; ?>  

如图:


注意:不过这种方式来使用PHP 脚本,系统不提倡这样做,系统提供了一个配置项PHP_OFF 来控制是否使用这种方式来控制
是否直接使用PHP 代码。系统默认不允许,所以这样子的PHP 代码无法运行。这个时候,你要让这种方式的PHP 代码运行,只需要在项目配置文件设置:

  1. 'PHP_OFF' = >true  

即可。


3:PHP 代码中不能在使用标签

php标签或者php代码里面就不能再使用标签(包括普通标签和Node标签)了,因此下面的几种方式都是无效的:
 

  1. <php><eq name='name' value='value'>value</eq></php>  


PHP 编译后的代码为:

  1. <?php !defined('DYHB_PATH') && exit; /* DoYouHaoBaby Framework 模板缓存文件 生成时间:2002-01-12 06:05:22  */ ?>   
  2. <?php <?php if(($name)  ==  "value"): ?>value<?php endif; ?> ?>   

如图:


程序运行结果是抛出异常:

如图:


Php标签里面使用了eq标签,造成了编译后的代码语法错误,因此无效。

  1. <php>if( {$sName} != 'DoYouHaoBaby' ) echo  'DoYouHaoBaby' ;</php>  


程序运行后的编译的PHP 代码如下:

  1. <?php !defined('DYHB_PATH') && exit; /* DoYouHaoBaby Framework 模板缓存文件 生成时间:2002-01-12 06:10:22  */ ?>   
  2. <?php if( <?php echo( $sName ); ?> != 'DoYouHaoBaby' ) echo  'DoYouHaoBaby' ; ?>   

如图:

程序运行结果如下,抛出异常:

如图:

说明:Php标签里面使用了{$sName}普通标签输出变量 ,因此无效。从这里你看出来了吧,因为生成了双重PHP 标签造成程序运行错误。但是,这也不是没有好处的,你完全可以在其它标签中混入另一种标签。

我们可以在模板中使用:

  1. {~$framework['name']='The DoYouHaoBaby Framework !'}   
  2. <php>if( $framework.name != 'DoYouHaoBaby' ) echo  'DoYouHaoBaby' ;</php>   


程序运行后的PHP 编译代码:

  1. <?php !defined('DYHB_PATH') && exit; /* DoYouHaoBaby Framework 模板缓存文件 生成时间:2002-01-12 06:19:01  */ ?>   
  2. <?php $framework['name']='The DoYouHaoBaby Framework !' ; ?>   
  3. <?php if( (is_array($framework)?$framework["name"]:$framework->name) != 'DoYouHaoBaby' ) echo  'DoYouHaoBaby' ; ?>   

如图:

程序运行结果如下:

  1. DoYouHaoBaby  

如图:


说明:简而言之,凡是能够自己生成的PHP 标签"<?php"和"?>"的语法都不能够在本标签中使用。好了,本文就到此结束。