The DoYouHaoBaby PHP Framework中文开发文档手册
Copyright(c) DoYouHaoBaby.NET All Rights Reserved.
[ 使用Javascript版本的U函数 ]

URL 是WEB网站的灵魂,完善的URL 解析系统是构建优质软件的必须。

DoYouHaoBaby Framework提供了PHP 版本的URL生成函数G::U(),这满足了大部分需求。

但是,后来在实践开发过程中,我们又发现了新的问题,那就是在复杂的Javascript请求中,

PHP版本的U函数根本无法满足这一需求。

于是,DoYouHaoBaby 框架提供了Javascript的U函数来解决这个问题。

Javascript版本的URL 函数位于框架中DoYouHaoBaby\LibCom\Js\Dyhb\Url\U.class.js中,这

里根据不同的项目部署方式,提供了两个方法(Dyhb.Url.U和Dyhb.Url.U2),其中

Dyhb.Url.U2用于虚拟主机方式的项目部署方式,Dyhb.Url.U用于独立服务器的项目部署方式。

Dyhb.Url.U的部分代码如下(简化版Dyhb.U):

  1. /**  
  2.  * 模拟框架URL 生成函数  
  3.  *  
  4.  * < 本函数用于特殊请求,用于框架加载数据  
  5.  *   请在模板中预先调用 App::U()初始化相关参数  
  6.  *   U( 'admin.php://group-module/action?param1=1&param1=2',new Array  
  7.  
  8. ('extraparam=hello','extraparam2=hello2','extraparam3=hello3') );  
  9.  *   U( 'group-module/action?param1=1&param1=2',new Array  
  10.  
  11. ('extraparam=hello','extraparam2=hello2','extraparam3=hello3') );  
  12.  *   U( 'module/action?param1=1&param1=2',new Array  
  13.  
  14. ('extraparam=hello','extraparam2=hello2','extraparam3=hello3') );  
  15.  * >  
  16.  *   
  17.  * @param string sUrl 初始化URL     
  18.  * @param arrParams arrParams 附件参数  
  19.  * @param bool bRedirect 是否返回  
  20.  * @param bool bSuffix 是否加上静态化后缀  
  21.  * @returns string  
  22.  */  
  23. Dyhb.Url.U = function( sUrl, arrParams,bRedirect,bSuffix ) {   
  24.   
  25.     var sWebsite = _ROOT_+'/';   
  26.   
  27.     /* 初始化参数 */  
  28.     arrParams = arrParams || new Array();   
  29.     bRedirect = bRedirect || false;   
  30.     bSuffix = bSuffix || false;  


Dyhb.Url.U2的部分代码如下(简化版Dyhb.U2):
  1. /**  
  2.  * 模拟框架URL 生成函数  
  3.  *  
  4.  * < 本函数用于特殊请求,用于框架加载数据  
  5.  *   请在模板中预先调用 App::U2()初始化相关参数  
  6.  *   U( 'app://group-module/action?param1=1&param1=2',new Array  
  7.  
  8. ('extraparam=hello','extraparam2=hello2','extraparam3=hello3') );  
  9.  *   U( 'group-module/action?param1=1&param1=2',new Array  
  10.  
  11. ('extraparam=hello','extraparam2=hello2','extraparam3=hello3') );  
  12.  *   U( 'module/action?param1=1&param1=2',new Array  
  13.  
  14. ('extraparam=hello','extraparam2=hello2','extraparam3=hello3') );  
  15.  * >  
  16.  *   
  17.  * @param string sUrl 初始化URL     
  18.  * @param arrParams arrParams 附件参数  
  19.  * @param bool bRedirect 是否返回  
  20.  * @param bool bSuffix 是否加上静态化后缀  
  21.  * @returns string  
  22.  */  
  23. Dyhb.Url.U2 = function( sUrl, arrParams,bRedirect,bSuffix ) {   
  24.   
  25.     var sWebsite = _ROOT_+'/index.php';   
  26.   
  27.     /* 初始化参数 */  
  28.     arrParams = arrParams || new Array();   
  29.     bRedirect = bRedirect || false;   
  30.     bSuffix = bSuffix || false;  


下面我们在模板中来测试一下我们的U函数。


虚拟主机部署方式的U2函数


我们在模板中写下注释中的代码:
  1. {script}   
  2. {:App::U2()}   
  3. alert(Dyhb.U2( 'app://group-module/action?param1=1&param1=2',new Array('extraparam=hello','extraparam2=hello2','extraparam3=hello3') ));   
  4. {/script}  

编译后的PHP 代码:
  1. <script type="text/javascript">   
  2. <?php echo( App::U2() );?>   
  3. alert(Dyhb.U2( 'app://group-module/action?param1=1&param1=2',new Array('extraparam=hello','extraparam2=hello2','extraparam3=hello3') ));   
  4. </script>  

程序运行后的效果:
你将会看到一个弹出窗口,通过这个可以生成Javascript的Url.
/index.php?

  1. /index.php?app=app&g=group&c=module&a=action&param1=1&param1=2&extraparam=hello&extraparam2=hello2&extraparam3=hello3  

说明:在使用Dyhb.U2的时候,你必须初始化App::U2来完成相关初始化参数设置。

独立服务器方式的U函数

同Dyhb.U2一样,Dyhb.U类似,大家可以自己测试。
你可以在模板中,写下如下如下的代码:
  1. {script}   
  2. {:App::U()}   
  3. alert(U( 'admin.php://group-module/action?param1=1&param1=2',new Array('extraparam=hello','extraparam2=hello2','extraparam3=hello3')));   
  4. {/script}