U函數的做用是根據當前的URL設置生成對應的URL地址,使用U函數能夠確保項目在移植過程當中不受環境的影響。數組
U方法的定義規則以下(方括號內參數根據實際應用決定):函數
U('地址表達式',['參數'],['僞靜態後綴'],['顯示域名'])
其中地址表達式的格式定義以下:spa
[模塊/控制器/操做#錨點@域名]?參數1=值1&參數2=值2...
模塊/控制器若是與當前模塊、控制器相同的話能夠省略。code
參數值既能夠經過'地址表達式'傳遞也能夠經過'參數'傳遞,而經過'參數'傳遞時既能夠是字符串也能夠是數組,因此下面三個URL地址是等效的:orm
U('blog/read?id=5&stu=0') U('blog/read','id=5&stu=0') U('blog/read',array('id=>5','stu=>0'))
但下面的表達式是錯誤的:blog
U('blog/read/id/5/stu/0')
另外,U函數會自動識別當前URL模式,並按當前URL模式生成URL地址。路由
實例與說明字符串
假設當前URL地址是 http://www.bnzoo.com/Home/Index/index,如今要訪問 http://www.bnzoo.com/Home/Index/text/id/25/ty/1,U函數表達以下:域名
//下面三個表達是等效的 U('text?id=25&ty=1') U('text','id=25&ty=1') U('text',array('id=>25','ty=>1'))
訪問 http://www.bnzoo.com/Home/Form/text/id/25/ty/1,U函數表達以下:class
//下面三個表達是等效的 U('Form/text?id=25&ty=1') U('Form/text','id=25&ty=1') U('Form/text',array('id=>25','ty=>1'))
訪問 http://www.bnzoo.com/Admin/Form/text/id/25/ty/1,U函數表達以下:
//下面三個表達是等效的 U('Admin/Form/text?id=25&ty=1') U('Admin/Form/text','id=25&ty=1') U('Admin/Form/text',array('id=>25','ty=>1'))
若是www.bnzoo.com和admin.bnzoo.com都指向當前應用的話,想經過 admin.bnzoo.com 訪問 Admin/Form/text/id/25/ty/1,即訪問 http://admin.bnzoo.com/Admin/Form/text/id/25/ty/1,U函數表達以下:
//下面三個表達是等效的 U('Admin/Form/text@admin.bnzoo.com?id=25&ty=1') U('Admin/Form/text@admin.bnzoo.com','id=25&ty=1') U('Admin/Form/text@admin.bnzoo.com',array('id=>25','ty=>1'))
若是設置了路由,U函數也能支持路由。好比咱們定義一個路由規則:
'text/:id\d'=>'Index/text'
U函數下面的表達都是能夠的:
U('/text/25')
U('Index/text?id=25')
假設當前地址是 http://www.bnzoo.com/Home/Index/index,那麼它們生成的URL地址分別是:
http://www.bnzoo.com/Home/text/25 http://www.bnzoo.com/Home/Index/text/id/25