由于YII致力于完美的整合第三方库,它并没有定义任何全局函数。yii中的每一个应用都需要全类别和对象范围。
例如,Yii::app()->user;Yii::app()->params['name']
;等等。
我们可以自行设定全局函数,使得代码看起来更加简洁易用。
我们可以保存在functions.php在protected目录下。然后,在入口脚本index.php的,我们包括在开始文件
require_once dirname(__FILE__) . '/protected/functions.php');
现在我们可以在应用的任何地方使用我们的全局函数,例如可以使用user()代替Yii::app()->user。 注:如果你打算发布一个可重用的组件,请不要组件中使用全局函数,在不同的应用配置中,可能导致无法使用。 同时,也应注意与第三方库的冲突,可考虑对每个函数前加上自己的前缀,已做区分,例如框架核心均已C为前缀。
下面是代码包含最常用的一些快捷功能:
/**
* 段标记
*/
defined('DS') or define('DS', DIRECTORY_SEPARATOR);
/**
* 精简版Yii::app()
*/
function app()
{
return Yii::app();
}
/**
* 精简版的Yii::app()->getClientScript
*/
function cs()
{
return Yii::app()->getClientScript();
}
/**
* 精简版的Yii::app()->getUser();
*/
function user()
{
return Yii::app()->getUser();
}
/**
* 精简版的创建URL Yii::app()->createUrl( $route, $params, $ampersand);
*/
function url( $route, $params, $ampersand = '&' )
{
return Yii::app()->createUrl( $route, $params, $ampersand);
}
/**
* 精简版 htmlspecialchars();
*/
function h( $text )
{
return htmlspecialchars( $text, ENT_QUOTES, Yii::app()->charset);
}
/**
* 精简版CHtml::link()
*/
function l( $text , $url = '###', $htmlOptions = array() )
{
return CHtml::link( $text, $url, $htmlOptions );
}
/**
* 精简Yii::t();
*/
function t( $message, $category = 'stay', $params = array(), $source = null, $language = null )
{
return Yii::t( $category, $message, $params, $source, $language );
}
/**
* 精简Yii::app()->request->baseUrl
*/
function bu( $url = null )
{
static $baseUrl;
if ( $baseUrl === null )
$baseUrl = Yii::app()->getRequest()->getBaseUrl();
return $url === null ? $baseUrl : $baseUrl . '/' . ltrim( $url, '/' );
}
/**
* 获取常量的精简
*/
function param( $name )
{
return Yii::app()->params[ $name ];
}
/**
* 打印数组的精简
*/
function dump( $string )
{
return CVarDumper::dump( $string, 10, true );
}