由于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为前缀。
/** * This is the shortcut to DIRECTORY_SEPARATOR */ defined('DS') or define('DS',DIRECTORY_SEPARATOR); /** * This is the shortcut to Yii::app() */ function app() { return Yii::app(); } /** * This is the shortcut to Yii::app()->clientScript */ function cs() { // You could also call the client script instance via Yii::app()->clientScript // But this is faster return Yii::app()->getClientScript(); } /** * This is the shortcut to Yii::app()->user. */ function user() { return Yii::app()->getUser(); } /** * This is the shortcut to Yii::app()->createUrl() */ function url($route,$params=array(),$ampersand='&') { return Yii::app()->createUrl($route,$params,$ampersand); } /** * This is the shortcut to CHtml::encode */ function h($text) { return htmlspecialchars($text,ENT_QUOTES,Yii::app()->charset); } /** * This is the shortcut to CHtml::link() */ function l($text, $url = '#', $htmlOptions = array()) { return CHtml::link($text, $url, $htmlOptions); } /** * This is the shortcut to Yii::t() with default category = 'stay' */ function t($message,$category='stay',$params=array(), $source=null,$language=null) { return Yii::t($category, $message, $params, $source, $language); } /** * This is the shortcut to Yii::app()->request->baseUrl * If the parameter is given, it will be returned and prefixed with the app baseUrl. */ function bu($url=null) { static $baseUrl; if ($baseUrl===null) $baseUrl=Yii::app()->getRequest()->getBaseUrl(); return $url===null ? $baseUrl : $baseUrl.'/'.ltrim($url,'/'); } /** * Returns the named application parameter. * This is the shortcut to Yii::app()->params[$name]. */ function param($name) { return Yii::app()->params[$name]; } /** * A useful one that I use in development is the following * which dumps the target with syntax highlighting on by default */ function dump($target) { return CVarDumper::dump($target, 10, true) ; }