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 相关文章推荐
Discuz! 5.0.0论坛程序中加入一段js代码,让会员点击下载附件前自动弹出提示窗口
Apr 18 PHP
php模板之Phpbean的目录结构
Jan 10 PHP
无需重新编译php加入ftp扩展的解决方法
Feb 07 PHP
PHP的password_hash()使用实例
Mar 17 PHP
apache中为php 设置虚拟目录
Dec 17 PHP
PHP加密解密字符串汇总
Apr 26 PHP
smarty模板判断数组为空的方法
Jun 10 PHP
PHP中的Trait 特性及作用
Apr 03 PHP
PHP 搜索查询功能实现
Nov 29 PHP
php判断是否为ajax请求的方法
Nov 29 PHP
PHP封装的验证码工具类定义与用法示例
Aug 22 PHP
php用户名的密码加密更安全的方法
Jun 21 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
晋城吧对DiscuzX进行的前端优化要点
2010/09/05 PHP
PHP的autoload机制的实现解析
2012/09/15 PHP
php页面函数设置超时限制的方法
2014/12/01 PHP
详解PHP中的mb_detect_encoding函数使用方法
2015/08/18 PHP
PHP微信支付开发实例
2016/06/22 PHP
php、java、android、ios通用的3des方法(推荐)
2016/09/09 PHP
thinkphp3.2实现在线留言提交验证码功能
2017/07/19 PHP
PHP设计模式之迭代器模式Iterator实例分析【对象行为型】
2020/04/26 PHP
asp.net下使用jquery 的ajax+WebService+json 实现无刷新取后台值的实现代码
2010/09/19 Javascript
jQuery学习笔记(4)--Jquery中获取table中某列值的具体思路
2013/04/10 Javascript
javascript实现TreeView 无刷新展开的实例代码
2013/07/13 Javascript
JS清除IE浏览器缓存的方法
2013/07/26 Javascript
php的文件上传入门教程(实例讲解)
2014/04/10 Javascript
jQuery通过控制节点实现仅在前台通过get方法完成参数传递
2015/02/02 Javascript
javascript中Array()数组函数详解
2015/08/23 Javascript
基于jQuery使用Ajax动态执行模糊查询功能
2018/07/05 jQuery
vue+axios+promise实际开发用法详解
2018/10/15 Javascript
JS实现的杨辉三角【帕斯卡三角形】算法示例
2019/02/26 Javascript
基于Vue+elementUI实现动态表单的校验功能(根据条件动态切换校验格式)
2019/04/04 Javascript
el-table表头根据内容自适应完美解决表头错位和固定列错位
2021/01/07 Javascript
用python实现的去除win下文本文件头部BOM的代码
2013/02/10 Python
基于python 处理中文路径的终极解决方法
2018/04/12 Python
Python 修改列表中的元素方法
2018/06/26 Python
在Python中append以及extend返回None的例子
2019/07/20 Python
pytorch 状态字典:state_dict使用详解
2020/01/17 Python
python利用opencv实现SIFT特征提取与匹配
2020/03/05 Python
基于python实现可视化生成二维码工具
2020/07/08 Python
Carolina工作鞋官网:Carolina Footwear
2019/03/14 全球购物
彪马荷兰官网:PUMA荷兰
2019/05/08 全球购物
渗透攻击的测试步骤
2014/06/07 面试题
介绍一下如何优化MySql
2016/12/20 面试题
商品陈列协议书
2014/09/29 职场文书
招商引资工作汇报材料
2014/10/28 职场文书
检讨书格式
2015/01/23 职场文书
2015年毕业实习工作总结
2015/05/29 职场文书
Linux中sftp常用命令整理
2022/06/28 Servers