创建帮助类

有许多内置的框架帮助类,例如yii\helpers命名空间下的StringHelper。这里包含了很多有用的静态方法,用于操纵字符串、文件、数组和其它目标。

在需要情况下,对于额外的行为,你可以创建一个自己的帮助类,并将任何静态函数放在里边。例如,我们在本小节中事先了数字帮助类。

准备

按照官方指南http://www.yiiframework.com/doc-2.0/guide-start-installation.html的描述,使用Composer包管理器创建一个新的yii2-app-basic应用。

如何做…

  1. 在你的项目中创建helpers文件夹,以及NumberHelper类:
  1. <?php
  2. namespace app\helpers;
  3. class NumberHelper
  4. {
  5. public static function format($value, $decimal = 2)
  6. {
  7. return number_format($value, $decimal, '.', ',');
  8. }
  9. }
  1. 添加actionNumbers方法到NumberHelper
  1. <?php
  2. ...
  3. class SiteController extends Controller
  4. {
  5. public function actionNumbers()
  6. {
  7. return $this->render('numbers', ['value' => 18878334526.3]);
  8. }
  9. }
  1. 添加views/site/numbers.php视图:
  1. <?php
  2. use app\helpers\NumberHelper;
  3. use yii\helpers\Html;
  4. /* @var $this yii\web\View */
  5. /* @var $value float */
  6. $this->title = 'Numbers';
  7. $this->params['breadcrumbs'][] = $this->title;
  8. ?>
  9. <div class="site-numbers">
  10. <h1><?= Html::encode($this->title) ?></h1>
  11. <p>
  12. Raw number:<br />
  13. <b><?= $value ?></b>
  14. </p>
  15. <p>
  16. Formatted number:<br />
  17. <b><?= NumberHelper::format($value) ?></b>
  18. </p>
  19. </div>
  1. 打开这个动作。你将会看到如下截图:

创建帮助类 - 图1

在其它例子中,你可以指定其它数量的十进制数。观察如下例子:

  1. NumberHelper::format($value, 3)

工作原理…

Yii2中任何帮助类只是函数的集合,在对应的类中以静态方法实现。

你可以使用一个帮助类用于实现任何类型的输出,操纵任何变量的任何值,以及其它例子。

注意:通常,静态帮助类是轻量干净的函数,有少数几个参数。避免将你的业务逻辑和其它复杂的操纵到帮助类中。在其它情况中,使用小组件或者其它组件,而不是帮助类。

参考

欲了解更多信息,参考:

http://www.yiiframework.com/doc-2.0/guide-helper-overview.html

例如对于内置帮助类,参考框架中helpers文件夹下的源代码。对于框架,参考:

https://github.com/yiisoft/yii2/tree/master/framework/helpers