YII全局函数使用

阅读更多

由于YII致力于完美的整合第三方库,它并没有定义任何全局函数。yii中的每一个应用都需要全类别和对象范围。
例如,Yii::app()->user;Yii::app()->params['name'] ;等等。我们可以自行设定全局函数,使得代码看起来更加简洁易用。

我们可以保存在globals.php在protected目录下。然后,在入口脚本index.php的,我们包括在开始文件
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 }

你可能感兴趣的:(PHP,框架,脚本)