Copyright(c) DoYouHaoBaby.NET All Rights Reserved.
除了常规变量的输出外,模板引擎还支持系统变量和系统常量、以及系统特殊变量的输出。它们的输出不需要事先赋值给某个模板变量。
系统变量的输出必须以$D(不区分大小写,即以$d开头都一样)打头,并且仍然可以支持使用函数。
首先,我们在控制器中给定值,然后加载模板。代码如下:
- $_SERVER['script_name']='I am script_name!' ;
- $_SESSION['session_id']='I am seesion_id';
- $_GET['page'] = 6;
- $_COOKIE['name']='I am cookie name';
- $this->display();
然后我们在模板文件使用如下代码:
- {$D.server.script_name }<br>
- {$D.session.session_id|md5 }<br>
- {$D.get.page }<br>
- {$D.cookie.name }
程序编译后的 PHP 代码为:
- <?php !defined('DYHB_PATH') && exit; /* DoYouHaoBaby Framework 模板缓存文件 生成时间:2002-01-10 04:12:41 */ ?>
- <?php echo( $_SERVER['script_name'] ); ?><br>
- <?php echo( md5($_SESSION['session_id']) ); ?><br>
- <?php echo( $_GET['page'] ); ?><br>
- <?php echo( $_COOKIE['name'] ); ?>
程序运行结果如下:
- I am script_name!
- d0b3fe6f268806a09e2e06050bc4c316
- 6
- I am cookie name
为了给大家不空洞的感觉,我们将截图谷歌浏览器运行结果:

说明:$D支持输出$_SERVER、$_ENV、 $_POST、 $_GET、 $_REQUEST、$_SESSION和 $_COOKIE变量。后面的server、cookie、get等不区
分大小写,但是变量区分大小写。例如下面每一条都等效:
- {$d.server.script_name }
- {$D.server.script_name }
- {$d.SERVER.script_name }
- {$D.SERVER.script_name }
- {$d.SeRver.script_name }
- {$D.sErveR.script_name }
并且它们都支持无限维的输出,例如:
- {$D.session.user.user_name.user_sub_name}
- {$D.get.user.user_name.user_sub_name}
程序运行后,生成的编译PHP 代码如下:
- <?php !defined('DYHB_PATH') && exit; /* DoYouHaoBaby Framework 模板缓存文件 生成时间:2002-01-10 04:33:40 */ ?>
- <?php echo( $_SESSION['user']['user_name']['user_sub_name'] ); ?>
- <?php echo( $_GET['user']['user_name']['user_sub_name'] ); ?>
如图:

系统变量有如下的等效方式,例如:
- {$_SERVER.script_name } <br>
- {$_SESSION.session_id|md5 }<br>
- {$_GET.page } <br>
- {$_COOKIE.name }
系统运行后,生成PHP 编译代码如下:
- <?php !defined('DYHB_PATH') && exit; /* DoYouHaoBaby Framework 模板缓存文件 生成时间:2002-01-10 04:39:44 */ ?>
- <?php echo( is_array($_SERVER) ? $_SERVER['script_name'] : $_SERVER->script_name ); ?> <br>
- <?php echo( md5(is_array($_SESSION) ? $_SESSION['session_id'] : $_SESSION->session_id) ); ?><br>
- <?php echo( is_array($_GET) ? $_GET['page'] : $_GET->page ); ?> <br>
- <?php echo( is_array($_COOKIE) ? $_COOKIE['name'] : $_COOKIE->name ); ?>
如图所示:

程序浏览器运行结果如下:
- I am script_name!
- d0b3fe6f268806a09e2e06050bc4c316
- 6
- I am cookie name
如图:

使用$D.const 输出
- {$D.const.__SELF__ }
- {$D.const.MODULE_NAME }
或者直接使用
- {$D.__SELF__ }
- {$D.MODULE_NAME }
我们在模板中写下如下的代码:
- {$D.const.__SELF__ }<br>
- {$D.const.MODULE_NAME }<br>
- {$D.__SELF__ }<br>
- {$D.MODULE_NAME}
程序编译后的PHP 代码如下:
- <?php !defined('DYHB_PATH') && exit; /* DoYouHaoBaby Framework 模板缓存文件 生成时间:2002-01-10 05:03:56 */ ?>
- <?php echo( __SELF__ ); ?><br>
- <?php echo( MODULE_NAME ); ?><br>
- <?php echo( __SELF__ ); ?><br>
- <?php echo( MODULE_NAME ); ?>
如图:

程序运行结果如下:
- /doyouhaobaby/TestApp/index.php/index/test4
- index
- /doyouhaobaby/TestApp/index.php/index/test4
- index
如图:
- {$D.version |dyhb_version} //版本
- {$D.now} //现在时间
- {$D.template|basename } //模板页面
- {$D.lefttag|left } //模板标签起始符号
- {$D.righttag|right } //模板标签结束符号
我们在模板中加入如下代码:
- {$D.version}<br>
- {$D.now}<br>
- {$D.template }<br>
- {$D.lefttag }<br>
- {$D.righttag }
PHP 运行后编译代码如下:
- <?php !defined('DYHB_PATH') && exit; /* DoYouHaoBaby Framework 模板缓存文件 生成时间:2002-01-10 05:31:31 */ ?>
- <?php echo( DYHB_VERSION ); ?><br>
- <?php echo( date('Y-m-d H:i:s', time()) ); ?><br>
- <?php echo( __TMPL_FILE_NAME__ ); ?><br>
- <?php echo( "{" ); ?><br>
- <?php echo( "}" ); ?>
如图:

程序最后运行结果如下:
- 1.2
- 2002-01-10 05:31:46
- /doyouhaobaby/TestApp/Tpl/Default/index_test4.html
- {
- }
如图:

{$d.config.db_char} 输出的值和G::C('db_char') 的返回结果是一样的。
也可以输出二维的配置参数,例如:
- {$d.config.user.user_name}
我们在模板写入如下代码:
- {$d.config.db_char}
- {:G::C('db_char')}
- {$d.config.user.user_name}
- {:G::C('user.user_name')}
程序运行后的编译PHP 代码为:
- <?php !defined('DYHB_PATH') && exit; /* DoYouHaoBaby Framework 模板缓存文件 生成时间:2002-01-10 05:52:19 */ ?>
- <?php echo( G::C('DB_CHAR') ); ?>
- <?php echo( G::C('db_char') );?>
- <?php echo( G::C('USER.user_name') ); ?>
- <?php echo( G::C('user.user_name') );?>
如图:

{$d.lang.page_error} 输出的值和G::L('page_error')的返回结果是一致的。
我们在模板写下如下的代码:
- {$d.lang.page_error}
- {:G::L('page_error')}
程序运行后的编译PHP 代码如下:
- <?php !defined('DYHB_PATH') && exit; /* DoYouHaoBaby Framework 模板缓存文件 生成时间:2002-01-10 05:44:05 */ ?>
- <?php echo( G::L('PAGE_ERROR') ); ?>
- <?php echo( G::L('page_error') );?>
如图:

与配置变量一样,语法变量也支持二维,用于与上面类似。比如你可以在模板中使用:
- {$d.lang.user.user_name}
- {:G::L('user.user_name')}
