以 Yii 2.0 基础版为例,高级版类似。
常用的系统帮助类主要有:
ArrayHelper、
StringHelper、
Url、
Html、Json等。
Yii 2.0 框架的系统帮助类目录为
/basic/vendor/yiisoft/yii2/helpers,以 Base 开头的类文件为对应帮助类的基类(父类)。
如果想对某个帮助类里面的方法进行扩展,可以在 basic 目录下,新建一个 helpers 目录,作为自定义的帮助类目录,在里面新建一个帮助类继承 Yii 的系统帮助类 或者 不继承而完全自定义一个帮助类。
这里,我们只介绍如何使用 Yii 2.0 系统帮助类。
在控制器层 /basic/controllers 目录,新增一个控制器文件 HelperController.php 用于演示,代码如下:
11, 'name'=>'jack', 'age'=>30],
['id'=>12, 'name'=>'rose', 'age'=>21],
['id'=>13, 'name'=>'lily', 'age'=>28],
];
// $res = ArrayHelper::getColumn($arr, 'age');
// print_r($res);
// $res = ArrayHelper::map($arr, 'id', 'name');
// var_dump($res);
ArrayHelper::multisort($arr, 'age', SORT_ASC); // 二维数组按照键名排序(很常用)
echo json_encode($arr);
}
/**
* 测试调用 StringHelper 帮助类
*/
public function actionString()
{
$string = '这是一个string测试';
echo StringHelper::truncate($string, 6, '...');
echo '
';
var_dump(StringHelper::startsWith($string, '这是'));
}
/**
* 测试调用 Url 帮助类
*/
public function actionUrl()
{
// toRoute方法,根据路由规则,生成url地址
// 1.传字符串
echo Url::toRoute('site/index').'
';
// 2.传数组
echo Url::toRoute(['site/index', 'id' => '1', 'src' => 'ref1', '#' => 'name']).'
';
// 3.传两个参数,第二个参数指定是否为绝对url(或协议类型)
echo Url::toRoute('site/index', true).'
';
echo Url::toRoute('site/index', 'https').'
';
// 4.传路径别名
\Yii::setAlias('posts', 'site/index'); // 设置路径别名(局部的)
echo Url::toRoute('@posts').'
';
// to方法
echo Url::to(['site/index']).'
';
echo Url::to().'
';
echo Url::to('images/logo.gif').'
';
echo Url::to('@web/images/logo.gif').'
';
echo Url::to('@web/images/logo.gif', true).'
'; // 带域名的资源地址
}
/**
* 查看 Yii 中 已经设置好的路径别名(全局的)
*/
public function actionAlias()
{
echo \Yii::getAlias('@app').'
';
echo \Yii::getAlias('@runtime').'
';
echo \Yii::getAlias('@vendor').'
';
echo \Yii::getAlias('@bower').'
';
echo \Yii::getAlias('@npm').'
';
echo \Yii::getAlias('@webroot').'
';
echo \Yii::getAlias('@web').'
';
}
/**
* 测试调用 Html 帮助类
*/
public function actionHtml()
{
// encode方法,将html特殊字符编码为html实体
$content = '<, >, ", \', \\';
echo Html::encode($content).'
';
// decode方法,将html实体解码为html特殊字符
echo Html::decode($content).'
';
}
}
然后,在浏览器地址栏输入下面的地址,查看效果:
http://basic.com/helper/array
http://basic.com/helper/string
http://basic.com/helper/url
http://basic.com/helper/alias
http://basic.com/helper/html