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 图片加水印与上传图片加水印php类
May 12 PHP
调整优化您的LAMP应用程序的5种简单方法
Jun 26 PHP
关于PHP递归算法和应用方法介绍
Apr 15 PHP
解析php php_openssl.dll的作用
Jul 01 PHP
php switch语句多个值匹配同一代码块应用示例
Jul 29 PHP
php防止网站被刷新的方法汇总
Dec 01 PHP
php获取访问者IP地址汇总
Apr 24 PHP
PHP中的魔术方法总结和使用实例
May 11 PHP
PHP文件上传小程序 适合初学者学习!
May 23 PHP
PHP中将一个字符串部分字符用星号*替代隐藏的实现代码
Sep 08 PHP
YII2框架中日志的配置与使用方法实例分析
Mar 18 PHP
PHP设计模式(三)建造者模式Builder实例详解【创建型】
May 02 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 如何获取二维数组中某个key的集合
2014/06/03 PHP
PHP实现的线索二叉树及二叉树遍历方法详解
2016/04/25 PHP
PHP PDOStatement::setFetchMode讲解
2019/02/03 PHP
用jQuery打造TabPanel效果代码
2010/05/22 Javascript
JS选项卡动态替换banner图片路径的方法
2015/05/11 Javascript
jQuery 3.0十大新特性
2016/07/06 Javascript
Vue组件BootPage实现简单的分页功能
2016/09/12 Javascript
bootstrapfileinput实现文件自动上传
2016/11/08 Javascript
实例详解vue.js浅度监听和深度监听及watch用法
2018/08/16 Javascript
Three.js中矩阵和向量的使用教程
2019/03/19 Javascript
vue项目强制清除页面缓存的例子
2019/11/06 Javascript
js实现带箭头的进度流程
2020/03/26 Javascript
apache部署python程序出现503错误的解决方法
2017/07/24 Python
python特性语法之遍历、公共方法、引用
2018/08/08 Python
python模糊图片过滤的方法
2018/12/14 Python
python常用函数与用法示例
2019/07/02 Python
关于Python3 类方法、静态方法新解
2019/08/30 Python
利用pandas合并多个excel的方法示例
2019/10/10 Python
python使用配置文件过程详解
2019/12/28 Python
pytorch实现从本地加载 .pth 格式模型
2020/02/14 Python
使用python实现微信小程序自动签到功能
2020/04/27 Python
scrapy-redis分布式爬虫的搭建过程(理论篇)
2020/09/29 Python
关于探究python中sys.argv时遇到的问题详解
2021/02/23 Python
CSS3实现王者荣耀匹配人员加载页面的方法
2019/04/16 HTML / CSS
Clearly澳大利亚:购买眼镜、太阳镜和隐形眼镜
2018/04/26 全球购物
北欧最好的童装网上商店:Babyshop
2019/09/15 全球购物
史上最全面的Java面试题汇总!
2015/02/03 面试题
2014国庆节标语口号
2014/09/19 职场文书
三年级上册科学教学计划
2015/01/21 职场文书
房地产销售经理岗位职责
2015/02/02 职场文书
在校生证明
2015/06/17 职场文书
会议主持词结束语
2015/07/03 职场文书
经典励志格言:每日一句,让你每天充满能量
2019/08/16 职场文书
小米11和iphone12哪个值得买?小米11对比iphone12评测
2021/04/21 数码科技
讲解MySQL增删改操作
2022/05/06 MySQL
volatile保证可见性及重排序方法
2022/08/05 Java/Android