扩展Yii2';s BaseYii类添加静态方法

扩展Yii2';s BaseYii类添加静态方法,yii,yii2,Yii,Yii2,是否可以扩展Yii2的BaseYii类,这样我就可以添加一个类似于Yii::t()的静态方法:Yii::my_super_method() 找不到任何关于这方面的文档,可能是我错过了。是的,可以扩展BaseYii类。如下所示 namespace app\models; class ClassName extends \yii\BaseYii { public static function my_super_method() { ......

是否可以扩展Yii2的BaseYii类,这样我就可以添加一个类似于
Yii::t()
的静态方法:
Yii::my_super_method()


找不到任何关于这方面的文档,可能是我错过了。

是的,可以扩展
BaseYii
类。如下所示

namespace app\models;

class ClassName extends \yii\BaseYii
{
     public static function my_super_method()
     {
         ......
         Here your code
         ........ 
     }
}
现在访问您的方法,如

app\models\ClassName::my_super_method();
现在访问
t()
方法

app\models\ClassName::t();

这可以通过创建自己的
Yii
类来实现(例如在项目的根目录中):

并将其加载到
index.php
而不是核心类中,方法是替换:

require __DIR__ . '/../vendor/yiisoft/yii2/Yii.php';



但是,如果您只想添加一个新方法,您可能不应该这样做。以这种方式重写核心类是可能的,但这是一种丑陋的攻击,应该尽可能避免。使用此方法创建自己的助手比破解核心类要好

我知道怎么做;)但是我想知道是否有可能在Yii中集成这些方法,像这样调用它们:Yii::custom_method()。是否有类似于components/modules config的方法来指定要使用的类?谢谢!我希望Yii已经创造了一种方法来做到这一点,但我想从逻辑上来说,这将是唯一的方法,我同意这是黑客的。我真的不知道如何编写帮助程序,但我会去读一读,也许它会完全满足我的需要。帮助程序基本上是一个带有公共静态方法的类,所以它一点也不复杂。强烈同意最后一部分,为此类需求创建一个帮助程序类。
require __DIR__ . '/../vendor/yiisoft/yii2/Yii.php';
require __DIR__ . '/../Yii.php';