The DoYouHaoBaby PHP Framework中文开发文档手册
Copyright(c) DoYouHaoBaby.NET All Rights Reserved.
[ 系统变量 ]

除了常规变量的输出外,模板引擎还支持系统变量和系统常量、以及系统特殊变量的输出。它们的输出不需要事先赋值给某个模板变量。

系统变量的输出必须以$D(不区分大小写,即以$d开头都一样)打头,并且仍然可以支持使用函数。

1、系统变量:包括server、session、post、get、request、cookie、env


首先,我们在控制器中给定值,然后加载模板。代码如下:

  1. $_SERVER['script_name']='I am script_name!' ;    
  2. $_SESSION['session_id']='I am seesion_id';   
  3. $_GET['page'] = 6;   
  4. $_COOKIE['name']='I am cookie name';   
  5.   
  6. $this->display();  


然后我们在模板文件使用如下代码:

  1. {$D.server.script_name }<br>     
  2. {$D.session.session_id|md5 }<br>     
  3. {$D.get.page }<br>      
  4. {$D.cookie.name }  


程序编译后的 PHP 代码为:

  1. <?php !defined('DYHB_PATH') && exit; /* DoYouHaoBaby Framework 模板缓存文件 生成时间:2002-01-10 04:12:41  */ ?>   
  2. <?php echo( $_SERVER['script_name'] ); ?><br>    
  3. <?php echo( md5($_SESSION['session_id']) ); ?><br>    
  4. <?php echo( $_GET['page'] ); ?><br>   
  5. <?php echo( $_COOKIE['name'] ); ?>  


程序运行结果如下:

  1. I am script_name!   
  2. d0b3fe6f268806a09e2e06050bc4c316   
  3. 6   
  4. I am cookie name  

为了给大家不空洞的感觉,我们将截图谷歌浏览器运行结果:


说明:$D支持输出$_SERVER、$_ENV、 $_POST、 $_GET、 $_REQUEST、$_SESSION和 $_COOKIE变量。后面的server、cookie、get等不区

分大小写,但是变量区分大小写。例如下面每一条都等效:

  1. {$d.server.script_name }   
  2. {$D.server.script_name }   
  3. {$d.SERVER.script_name }   
  4. {$D.SERVER.script_name }   
  5. {$d.SeRver.script_name }   
  6. {$D.sErveR.script_name }  

 

并且它们都支持无限维的输出,例如: 

  1. {$D.session.user.user_name.user_sub_name}   
  2. {$D.get.user.user_name.user_sub_name}  


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

  1. <?php !defined('DYHB_PATH') && exit; /* DoYouHaoBaby Framework 模板缓存文件 生成时间:2002-01-10 04:33:40  */ ?>   
  2. <?php echo( $_SESSION['user']['user_name']['user_sub_name'] ); ?>   
  3. <?php echo( $_GET['user']['user_name']['user_sub_name'] ); ?>  

如图:


系统变量有如下的等效方式,例如:

  1. {$_SERVER.script_name } <br>    
  2. {$_SESSION.session_id|md5 }<br>    
  3. {$_GET.page } <br>    
  4. {$_COOKIE.name }  


系统运行后,生成PHP 编译代码如下:

  1. <?php !defined('DYHB_PATH') && exit; /* DoYouHaoBaby Framework 模板缓存文件 生成时间:2002-01-10 04:39:44  */ ?>   
  2. <?php echo( is_array($_SERVER) ? $_SERVER['script_name'] : $_SERVER->script_name ); ?> <br>    
  3. <?php echo( md5(is_array($_SESSION) ? $_SESSION['session_id'] : $_SESSION->session_id) ); ?><br>    
  4. <?php echo( is_array($_GET) ? $_GET['page'] : $_GET->page ); ?> <br>    
  5. <?php echo( is_array($_COOKIE) ? $_COOKIE['name'] : $_COOKIE->name ); ?>  

如图所示:


程序浏览器运行结果如下:

  1. I am script_name!    
  2. d0b3fe6f268806a09e2e06050bc4c316   
  3. 6    
  4. I am cookie name  

如图:


2、系统常量 :

使用$D.const 输出

  1. {$D.const.__SELF__ }    
  2. {$D.const.MODULE_NAME }   

或者直接使用

  1. {$D.__SELF__ }    
  2. {$D.MODULE_NAME }  


我们在模板中写下如下的代码:

  1. {$D.const.__SELF__ }<br>   
  2. {$D.const.MODULE_NAME }<br>   
  3. {$D.__SELF__ }<br>   
  4. {$D.MODULE_NAME}  


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

  1. <?php !defined('DYHB_PATH') && exit; /* DoYouHaoBaby Framework 模板缓存文件 生成时间:2002-01-10 05:03:56  */ ?>   
  2. <?php echo( __SELF__ ); ?><br>   
  3. <?php echo( MODULE_NAME ); ?><br>   
  4. <?php echo( __SELF__ ); ?><br>   
  5. <?php echo( MODULE_NAME ); ?>  

如图:

程序运行结果如下:

  1. /doyouhaobaby/TestApp/index.php/index/test4   
  2. index   
  3. /doyouhaobaby/TestApp/index.php/index/test4   
  4. index  


如图:


3、特殊变量 :由DoYouHaoBaby 系统内部定义的常量

  1. {$D.version |dyhb_version}  //版本       
  2.   
  3. {$D.now} //现在时间       
  4.   
  5. {$D.template|basename } //模板页面       
  6.   
  7. {$D.lefttag|left } //模板标签起始符号      
  8.   
  9. {$D.righttag|right } //模板标签结束符号   


我们在模板中加入如下代码:

  1. {$D.version}<br>       
  2. {$D.now}<br>       
  3. {$D.template }<br>       
  4. {$D.lefttag }<br>      
  5. {$D.righttag }  


PHP 运行后编译代码如下:

  1. <?php !defined('DYHB_PATH') && exit; /* DoYouHaoBaby Framework 模板缓存文件 生成时间:2002-01-10 05:31:31  */ ?>   
  2. <?php echo( DYHB_VERSION ); ?><br>       
  3. <?php echo( date('Y-m-d H:i:s', time()) ); ?><br>       
  4. <?php echo( __TMPL_FILE_NAME__ ); ?><br>       
  5. <?php echo( "{" ); ?><br>      
  6. <?php echo( "}" ); ?>  

如图:


程序最后运行结果如下:

  1. 1.2   
  2. 2002-01-10 05:31:46   
  3. /doyouhaobaby/TestApp/Tpl/Default/index_test4.html   
  4. {   
  5. }  

如图:


4、配置参数 :输出项目的配置参数值

{$d.config.db_char} 输出的值和G::C('db_char') 的返回结果是一样的。

也可以输出二维的配置参数,例如:

  1. {$d.config.user.user_name}  


我们在模板写入如下代码:

  1. {$d.config.db_char}   
  2. {:G::C('db_char')}   
  3.   
  4. {$d.config.user.user_name}   
  5. {:G::C('user.user_name')}  


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

  1. <?php !defined('DYHB_PATH') && exit; /* DoYouHaoBaby Framework 模板缓存文件 生成时间:2002-01-10 05:52:19  */ ?>   
  2. <?php echo( G::C('DB_CHAR') ); ?>   
  3. <?php echo( G::C('db_char') );?>   
  4.   
  5. <?php echo( G::C('USER.user_name') ); ?>   
  6. <?php echo( G::C('user.user_name') );?>  


如图:

5、语言变量:

{$d.lang.page_error} 输出的值和G::L('page_error')的返回结果是一致的。

我们在模板写下如下的代码:

  1. {$d.lang.page_error}   
  2. {:G::L('page_error')}  


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

  1. <?php !defined('DYHB_PATH') && exit; /* DoYouHaoBaby Framework 模板缓存文件 生成时间:2002-01-10 05:44:05  */ ?>   
  2. <?php echo( G::L('PAGE_ERROR') ); ?>   
  3. <?php echo( G::L('page_error') );?>  


如图:


与配置变量一样,语法变量也支持二维,用于与上面类似。比如你可以在模板中使用:

  1. {$d.lang.user.user_name}   
  2. {:G::L('user.user_name')}