bugfix> yii > 投稿

Yii2のBaseYiiクラスを拡張することは可能ですか?そのため、 Yii::t() のような静的メソッドを追加できますこのような: Yii::my_super_method()

それについてのドキュメントを本当に見つけることができません、たぶん私はそれを逃しました。

回答 2 件
  • これは、独自の Yii を作成することにより可能です  クラス(プロジェクトのルートなど):

    require __DIR__ . '/vendor/yiisoft/yii2/BaseYii.php';
    class Yii extends \yii\BaseYii
    {
        public static function my_super_method() {
            // ...
        }
    }
    spl_autoload_register(['Yii', 'autoload'], true, true);
    Yii::$classMap = require __DIR__ . '/vendor/yiisoft/yii2/classes.php';
    Yii::$container = new yii\di\Container();
    
    

    そして、それを index.php にロードする  代わりに、コアクラス:

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

    require __DIR__ . '/../Yii.php';
    
    

    ただし、新しいメソッドを追加するだけの場合あなたはおそらくこれをしないでください。この方法でコアクラスをオーバーライドすることは可能ですが、これはいハックであり、可能な限り避けるべきです。コアクラスをハッキングするよりも、このメソッドを使用して独自のヘルパーを作成することをお勧めします。

  • はい、 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();
    
    

あなたの答え