Yii2中实用的helpler函数 [ 2.0 版本 ]
借鉴Laravel5.2+的一些helper函数,Yii2在helper函数中也可以实现很多类似的有用函数。
比如,新建一个helper.php,放在某个目录下,比如./config/下。在web.php配置文件中引入:
helper里面可以定义一些常用的函数。
app()
Laravel的app()函数相当于Yii2的Yii:$app + Yii::$container
,用来自动解析依赖,获取类的实例时非常方便,在helper中也可以实现类似的功能:
if (!function_exists('app')) {
/**
* Get the available container instance.
*
* @param string $instance
*
* @return mixed|\yii\di\Container
*/
function app($instance = null)
{
if (is_null($instance)) {
return Yii::$container;
}
if (Yii::$app->has($instance)) {
return Yii::$app->get($instance);
}
return Yii::$container->get($instance);
}
}
- 什么参数都不传,返回Yii:$container容器
- 传递
$instance
实例名时,首先从Yii::$app
获取组件,比如request,response,db
这些,如果没有获取到再到Yii:$container
容器中获取
这样我们就简化了很多写法:
Yii::$app->request
简化为
app('request')
Yii::$container->get('userService')
简化为
app('userService')
$user = app('\common\model\User')
...
写起来会比较方便。不过,IDE代码跟踪会差一些。
dd()
我们经常会调试代码,打印一些变量。常用的是var_dump()。对这个做一些优化,可以得到:
if (!function_exists('dd')) {
function dd(...$param)
{
foreach ($param as $p) {
\yii\helpers\VarDumper::dump($p, 10, true);
echo '<pre>';
}
exit(1);
}
}
代码:
$user = Yii::$app->user->identity;
$comment = Comment::find()->where(['>', 'id', 1])->one();
dd($user->toArray(),$comment->toArray());
效果:
dd()可传多个参数,就像var_dump()一样。
env()
可以用来获取环境变量的值:
if (!function_exists('env')) {
function env($key, $default = null)
{
$value = getenv($key);
if ($value === false) {
return value($default);
}
switch (strtolower($value)) {
case 'true':
case '(true)':
return true;
case 'false':
case '(false)':
return false;
case 'empty':
case '(empty)':
return '';
case 'null':
case '(null)':
return;
}
if (('"' === substr($value, 0, 1)) && ('"' === substr($value, -1, 1))) {
return substr($value, 1, -1);
}
return $value;
}
}
value()
if (!function_exists('value')) {
/**
* Return the default value of the given value.
*
* @param mixed $value
*
* @return mixed
*/
function value($value)
{
return $value instanceof Closure ? $value() : $value;
}
}
getVal()
yii\helpers\ArrayHelper::getValue 太长了,做个简写:
if (!function_exists('getVal')) {
/**
* 从对象,数组中获取获取数据.
*
* @param $array mixed 数组或者对象
* @param $key array|string 对象的属性,或者数组的键值/索引,以'.'链接或者放入一个数组
* @param $default string 如果对象或者属性中不存在该值事返回的值
*
* @return mixed mix
**/
function getVal($array, $key, $default = '')
{
return yii\helpers\ArrayHelper::getValue($array, $key, $default);
}
}
yiiUrl()
在html中这个函数会方便生成url
if (!function_exists('yiiUrl')) {
/**
* 创建url.
*
* @param $url string 对象的属性,或者数组的键值/索引,以'.'链接或者放入一个数组
*
* @return mixed mix
**/
function yiiUrl($url)
{
return Yii::$app->urlManager->createUrl($url);
}
}
yiiParams
获取Yii::$app->params 同样非常常用,也做个简写:
if (!function_exists('yiiParams')) {
/**
* 获取yii配置参数.
*
* @param $key string 对象的属性,或者数组的键值/索引,以'.'链接或者放入一个数组
*
* @return mixed mix
**/
function yiiParams($key)
{
return Yii::$app->params[$key];
}
}
在笔者的实际开发,这些helper函数能有效提高写代码效率,大家不妨试试!
原文链接:http://blog.csdn.net/qq_24127857/article/details/79255442
米粒人生 苏州
注册时间:2016-11-07
最后登录:2021-04-25
在线时长:47小时54分
最后登录:2021-04-25
在线时长:47小时54分
- 粉丝111
- 金钱6555
- 威望230
- 积分9325
热门源码
- 基于 Yii 2 + Bootstrap 3 搭建一套后台管理系统 CMF
- 整合完 yii2-rbac+yii2-admin+adminlte 等库的基础开发后台源码
- 适合初学者学习的一款通用的管理后台
- yii-goaop - 将 goaop 集成到 Yii,在 Yii 中优雅的面向切面编程
- yii-log-target - 监控系统异常且多渠道发送异常信息通知
- 店滴云1.3.0
- 面向对象的一小步:添加 ActiveRecord 的 Scope 功能
- Yii2 开源商城 FecShop
- 基于 Yii2 开发的多店铺商城系统,免费开源 + 适合二开
- leadshop - 基于 Yii2 开发的一款免费开源且支持商业使用的商城管理系统
共 0 条评论