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 8小时时间差的解决方法小结
Dec 22 PHP
PHP详解ASCII码对照表与字符转换
Dec 05 PHP
教你如何用php实现LOL数据远程获取
Jun 10 PHP
PHP采集类snoopy详细介绍(snoopy使用教程)
Jun 19 PHP
PHP中ini_set与ini_get用法实例
Nov 04 PHP
php实现模拟post请求用法实例
Jul 11 PHP
php基于websocket搭建简易聊天室实践
Oct 24 PHP
PHP中检索字符串的方法分析【strstr与substr_count方法】
Feb 17 PHP
PHP面向对象五大原则之开放-封闭原则(OCP)详解
Apr 04 PHP
PHP实现的函数重载功能示例
Aug 03 PHP
Laravel用户授权系统的使用方法示例
Sep 16 PHP
如何判断微信付款码和支付宝付款码
Apr 01 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使用curl模拟post上传及接收文件的方法
2016/03/04 PHP
PHP实现链式操作的三种方法详解
2017/11/16 PHP
PHP基于面向对象封装的分页类示例
2019/03/15 PHP
判断多个元素(RADIO,CHECKBOX等)是否被选择的原理说明
2009/02/18 Javascript
基于Jquery的简单&简陋Tabs插件代码
2010/02/09 Javascript
jquery 简短几句代码实现给元素动态添加及获取提示信息
2011/09/01 Javascript
js 剪切板的用法(clipboardData.setData)与js match函数介绍
2013/11/19 Javascript
JQuery给元素绑定click事件多次执行的解决方法
2014/05/29 Javascript
基于javascript、ajax、memcache和PHP实现的简易在线聊天室
2015/02/03 Javascript
javascript格式化指定日期对象的方法
2015/04/21 Javascript
JavaScript实现简洁的俄罗斯方块完整实例
2016/03/01 Javascript
js前端解决跨域问题的8种方案(最新最全)
2016/11/18 Javascript
jQuery+PHP+Mysql实现抽奖程序
2020/04/12 jQuery
jQuery实现QQ空间汉字转拼音功能示例
2017/07/10 jQuery
微信小程序实现的贪吃蛇游戏【附源码下载】
2018/01/03 Javascript
vue弹窗组件使用方法
2018/04/28 Javascript
JS滚轮控制图片缩放大小和拖动的实例代码
2018/11/20 Javascript
如何用JavaScript实现功能齐全的单链表详解
2019/02/11 Javascript
手把手带你封装一个vue component第三方库
2019/02/14 Javascript
js console.log打印对象时属性缺失的解决方法
2019/05/23 Javascript
Vue实现购物车实例代码两则
2020/05/30 Javascript
微信小程序基于ColorUI构建皮皮虾短视频去水印组件
2020/11/04 Javascript
[38:39]KG vs Mineski 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
python使用range函数计算一组数和的方法
2015/05/07 Python
浅谈pyhton学习中出现的各种问题(新手必看)
2017/05/17 Python
Python回文字符串及回文数字判定功能示例
2018/03/20 Python
在python里协程使用同步锁Lock的实例
2019/02/19 Python
在PYQT5中QscrollArea(滚动条)的使用方法
2019/06/14 Python
PyQt5中多线程模块QThread使用方法的实现
2020/01/31 Python
基于Python的接口自动化读写excel文件的方法
2021/01/15 Python
解决pytorch下出现multi-target not supported at的一种可能原因
2021/02/06 Python
浅谈移动端网页图片预加载方案
2018/11/05 HTML / CSS
一家外企的面试题目(C/C++面试题,C语言面试题)
2014/03/24 面试题
介绍一下SQL注入攻击的种类和防范手段
2012/02/18 面试题
弄虚作假心得体会
2014/09/10 职场文书
玄武湖导游词
2015/02/05 职场文书