Yii的助手/组件调试类随处可用,语法简单,无需导入

时间:2018-04-17 15:05:08

标签: yii yii2

假设我有一个Debug助手,其方法是以类似于此的方式显示变量的内容:

namespace app\components;

class D extends \yii\base\Component
{
    public static function trace($variable='')
    {
        echo $variable;
    }

}

有没有办法让这个组件可以在任何ControllerModelView中使用,只需使用简单的表单,然后写一下:

D::trace($bob);

我想知道是否可以在任何地方导入它,所以我不必使用其中一个

// Load in config then use this (too long)
Yii::$app->D->trace($key);

// Write the whole namespace everytime (too long)
\app\components\D::trace($value);

// Load the namespace first every time I need it first (Annoying)
use app\components\D;
D::trace($value);

1 个答案:

答案 0 :(得分:1)

您有两种选择:

  1. 在全局命名空间中创建帮助器并在任何地方添加前导斜杠:

    \D::trace($value);
    
  2. 创建全局函数作为helper(或其方法)的包装器:

    function d() {
        static $d;
        if ($d === null) {
            $d = new D();
        }
    
        return $d;
    }
    
    d()->trace($string)
    

    function dtrace($string) {
        return D::trace($string);
    }
    
    dtrace($string);