YII全局函数使用
由于YII致力于完美的整合第三方库,它并没有定义任何全局函数。yii中的每一个应用都需要全类别和对象范围。
例如,Yii::app()->user;Yii::app()->params['name']
;等等。我们可以自行设定全局函数,使得代码看起来更加简洁易用。
require('path/to/globals.php');require('path/to/yii.php');
现在我们可以在应用的任何地方使用我们的全局函数,例如可以使用user()代替Yii::app()->user。注:如果你打算发布一个可重用的组件,请不要组件中使用全局函数,在不同的应用配置中,可能导致无法使用。同时,也应注意与第三方库的冲突,可考虑对每个函数前加上自己的前缀,已做区分,例如框架核心均已C为前缀。
?
下面是代码包含最常用的一些快捷功能。01
/**
02
?
* This is the shortcut to DIRECTORY_SEPARATOR
03
?
*/
04
defined(
'DS'
)
or
define(
'DS'
,DIRECTORY_SEPARATOR);
05
?06
/**
07
?
* This is the shortcut to Yii::app()
08
?
*/
09
function
app()
10
{
11
????
return
Yii::app();
12
}
13
?14
/**
15
?
* This is the shortcut to Yii::app()->clientScript
16
?
*/
17
function
cs()
18
{
19
????
// You could also call the client script instance via Yii::app()->clientScript
20
????
// But this is faster
21
????
return
Yii::app()->getClientScript();
22
}
23
?24
/**
25
?
* This is the shortcut to Yii::app()->user.
26
?
*/
27
function
user()
28
{
29
????
return
Yii::app()->getUser();
30
}
31
?32
/**
33
?
* This is the shortcut to Yii::app()->createUrl()
34
?
*/
35
function
url(
$route
,
$params
=
array
(),
$ampersand
=
'&'
)
36
{
37
????
return
Yii::app()->createUrl(
$route
,
$params
,
$ampersand
);
38
}
39
?40
/**
41
?
* This is the shortcut to CHtml::encode
42
?
*/
43
function
h(
$text
)
44
{
45
????
return
htmlspecialchars(
$text
,ENT_QUOTES,Yii::app()->charset);
46
}
47
?48
/**
49
?
* This is the shortcut to CHtml::link()
50
?
*/
51
function
l(
$text
,
$url
=
'#'
,
$htmlOptions
=
array
())
52
{
53
????
return
CHtml::link(
$text
,
$url
,
$htmlOptions
);
54
}
55
?56
/**
57
?
* This is the shortcut to Yii::t() with default category = 'stay'
58
?
*/
59
function
t(
$message
,
$category
=
'stay'
,
$params
=
array
(),
$source
=null,
$language
=null)
60
{
61
????
return
Yii::t(
$category
,
$message
,
$params
,
$source
,
$language
);
62
}
63
?64
/**
65
?
* This is the shortcut to Yii::app()->request->baseUrl
66
?
* If the parameter is given, it will be returned and prefixed with the app baseUrl.
67
?
*/
68
function
bu(
$url
=null)
69
{
70
????
static
$baseUrl
;
71
????
if
(
$baseUrl
===null)
72
????????
$baseUrl
=Yii::app()->getRequest()->getBaseUrl();
73
????
return
$url
===null ?
$baseUrl
:
$baseUrl
.
'/'
.ltrim(
$url
,
'/'
);
74
}
75
?76
/**
77
?
* Returns the named application parameter.
78
?
* This is the shortcut to Yii::app()->params[$name].
79
?
*/
80
function
param(
$name
)
81
{
82
????
return
Yii::app()->params[
$name
];
83
}
84
/**
85
?
* A useful one that I use in development is the following
86
?
* which dumps the target with syntax highlighting on by default
87
?
*/
88
function
dump(
$target
)
89
{
90
??
return
CVarDumper::dump(
$target
, 10, true) ;
91
}