Yii 有 helper/component debug class 随处可用,语法简单,无需导入

Yii have helper/component debug class available everywhere with simple syntax and without having to import

假设我有一个 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. 在全局命名空间中创建助手并在各处添加前导斜杠:

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

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

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