Yii全局函数用法示例


Posted in PHP onJanuary 22, 2017

本文实例讲述了Yii全局函数用法。分享给大家供大家参考,具体如下:

由于YII致力于完美的整合第三方库,它并没有定义任何全局函数。yii中的每一个应用都需要全类别和对象范围。

例如,Yii::app()->user;Yii::app()->params['name'];等等。我们可以自行设定全局函数,使得代码看起来更加简洁易用。

我们可以保存在globals.php在protected/config目录下。然后,在入口脚本index.php中,定义如下内容:

$globals=dirname(__FILE__).'/protected/config/globals.php';
...
require_once($yii);
require_once($globals);

现在我们可以在应用的任何地方使用我们的全局函数,例如可以使用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);
}

希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。

PHP 相关文章推荐
php smarty的预保留变量总结
Dec 04 PHP
php 更新数据库中断的解决方法
Jun 05 PHP
php Smarty 字符比较代码
Feb 27 PHP
在smarty模板中使用PHP函数的方法
Apr 23 PHP
zf框架的数据库追踪器使用示例
Mar 13 PHP
php计算两个日期时间差(返回年、月、日)
Jun 19 PHP
PHP魔术方法的使用示例
Jun 23 PHP
thinkPHP下ueditor的使用方法详解
Dec 26 PHP
PHP函数shuffle()取数组若干个随机元素的方法分析
Apr 02 PHP
joomla组件开发入门教程
May 04 PHP
php cookie 详解使用实例
Nov 03 PHP
基于thinkphp5框架实现微信小程序支付 退款 订单查询 退款查询操作
Aug 17 PHP
PHP5.5安装PHPRedis扩展及连接测试方法
Jan 22 #PHP
微信公众号OAuth2.0网页授权问题浅析
Jan 21 #PHP
Yii2-GridView 中让关联字段带搜索和排序功能示例
Jan 21 #PHP
PHP三种方式实现链式操作详解
Jan 21 #PHP
PHP将字符串首字母大小写转换的实例
Jan 21 #PHP
thinkphp 手机号和用户名同时登录
Jan 20 #PHP
thinkphp实现把数据库中的列的值存到下拉框中的方法
Jan 20 #PHP
You might like
php header示例代码(推荐)
2010/09/08 PHP
php INI配置文件的解析实现分析
2011/01/04 PHP
PHP连接Access数据库的方法小结
2013/06/20 PHP
php文字水印和php图片水印实现代码(二种加水印方法)
2013/12/25 PHP
ThinkPHP采用原生query实现关联查询left join实例
2014/12/02 PHP
使用Huagepage和PGO来提升PHP7的执行性能
2015/11/30 PHP
jQuery使用手册之一
2007/03/24 Javascript
wangEditor编辑器失去焦点后仍然可以在原位置插入图片分析
2015/05/06 Javascript
javascript实现模拟时钟的方法
2015/05/13 Javascript
JavaScript人脸识别技术及脸部识别JavaScript类库Tracking.js
2015/09/14 Javascript
JS+CSS实现分类动态选择及移动功能效果代码
2015/10/19 Javascript
js添加绑定事件的方法
2016/05/15 Javascript
有关JavaScript中call()和apply() 的一些理解
2016/05/20 Javascript
JSONP基础知识详解
2017/03/19 Javascript
浅谈react.js 之 批量添加与删除功能
2017/04/17 Javascript
es6学习之解构时应该注意的点
2017/08/29 Javascript
一步快速解决微信小程序中textarea层级太高遮挡其他组件
2019/03/04 Javascript
一篇文章介绍redux、react-redux、redux-saga总结
2019/05/23 Javascript
Ajax请求时无法重定向的问题解决代码详解
2019/06/21 Javascript
bootstrap table实现横向合并与纵向合并
2019/07/18 Javascript
vue中通过使用$attrs实现组件之间的数据传递功能
2019/09/01 Javascript
如何在wxml中直接写js代码(wxs)
2019/11/14 Javascript
用Python遍历C盘dll文件的方法
2015/05/06 Python
tensorflow中next_batch的具体使用
2018/02/02 Python
PyQt5根据控件Id获取控件对象的方法
2019/06/25 Python
django基于cors解决跨域请求问题详解
2019/08/06 Python
pytorch快速搭建神经网络_Sequential操作
2020/06/17 Python
Keras-多输入多输出实例(多任务)
2020/06/22 Python
如何写出高质量、高性能的MySQL查询
2014/11/17 面试题
造价工程师个人求职信
2013/09/21 职场文书
医生党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
工作检讨书怎么写
2014/10/10 职场文书
先进班集体申报材料
2014/12/26 职场文书
2015年图书馆个人工作总结
2015/05/26 职场文书
python套接字socket通信
2022/04/01 Python
PHP 时间处理类Carbon
2022/05/20 PHP