トレイト関数をオーバーライドし、オーバーライドされた関数から呼び出す方法は?

シュウ

シナリオ:

trait A {
    function calc($v) {
        return $v+1;
    }
}

class MyClass {
    use A;

    function calc($v) {
        $v++;
        return A::calc($v);
    }
}

print (new MyClass())->calc(2); // should print 4

このコードは機能せず、継承されたようなトレイト関数を呼び出す方法が見つかりません。私は呼び出してみましたself::calc($v)static::calc($v)parent::calc($v)A::calc($v)および以下:

trait A {
    function calc($v) {
        return $v+1;
    }
}

class MyClass {
    use A {
        calc as traitcalc;
    }

    function calc($v) {
        $v++;
        return traitcalc($v);
    }
}

何も機能しません。

それを機能させる方法はありますか、それともこれよりもはるかに複雑なトレイト関数を完全にオーバーライドする必要があります:)

ircmaxell

あなたの最後のものはほとんどそこにありました:

trait A {
    function calc($v) {
        return $v+1;
    }
}

class MyClass {
    use A {
        calc as protected traitcalc;
    }

    function calc($v) {
        $v++;
        return $this->traitcalc($v);
    }
}

特性はクラスではありません。メンバーに直接アクセスすることはできません。基本的には自動化されたコピーアンドペーストです...

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

オーバーライド関数でオーバーライドされた関数を呼び出す

分類Dev

Odooオーバーライドされた関数呼び出し順序

分類Dev

基本クラスのフレンド関数が、プライベートであるにもかかわらず、派生クラスのオーバーライドされた仮想関数をどのように呼び出しているか?(C ++)

分類Dev

配列内のオブジェクトからオーバーライド関数を呼び出すAngelscript

分類Dev

コンストラクターまたはinitブロックから呼び出されたオーバーライドされた抽象関数で変数を初期化するときに変数が正しく初期化されない

分類Dev

テンプレート化されたクラスは、そのタイプの1つで呼び出されたオーバーロードされた非メンバー関数をどのように解決しますか?

分類Dev

Xamarinは、値を返すオーバーライドから非同期関数を呼び出します

分類Dev

onclickを呼び出すオーバーライドされた関数が機能しない

分類Dev

オーバーライドされた関数のパラメータ-operator()c ++を呼び出す

分類Dev

関数を呼び出さずに、型の基本関数がGoでオーバーライドされているかどうかを確認する方法は?

分類Dev

SVML からの関数呼び出しのオーバーライド

分類Dev

オーバーライドされている場合、標準ライブラリから関数を呼び出すことは可能ですか?

分類Dev

Odoo 12.オーバーライドされた関数をオーバーライドする方法は?

分類Dev

Javascriptクラスの関数をオーバーライドし、基本関数を呼び出す方法

分類Dev

AngularJs : 'this' にバインドされたコントローラー関数を外部から呼び出します (例: ブラウザー コンソール)

分類Dev

このジェネリック関数がオーバーライドされた関数を呼び出さないのはなぜですか

分類Dev

基本クラスメソッドから基本クラスオーバーライドされた関数を呼び出す

分類Dev

オーバーライドされた関数を呼び出さないように工夫する-Rubyon Rails

分類Dev

ユニバーサル参照またはr値参照を使用したオーバーロードされたオーバーライドされた関数の呼び出しがあいまいなのはなぜですか?

分類Dev

子オーバーライドが呼び出されるときは、常にスーパークラス仮想関数を呼び出します

分類Dev

次のティックオーバーライド機能は関数が呼び出されますか

分類Dev

JavaScript関数オブジェクトをオーバーライドしてすべての関数呼び出しをログに記録できますか?

分類Dev

C ++で基本クラスへのポインターが与えられたときに、派生クラスオブジェクトのオーバーロードされた関数が呼び出されないのはなぜですか?

分類Dev

ReactNativeのフラットリストにバインドされた異なるコンポーネントから関数を呼び出す方法

分類Dev

オーバーライドされた関数がJavascriptで呼び出されない(厳密モード)

分類Dev

関数呼び出しをラップしたり、関数呼び出しをオーバーロードしたりする方法はありますか?

分類Dev

メソッド呼び出し引数で、解凍されたdictのキーワード引数をオーバーライドする方法は?

分類Dev

javascriptクロージャ関数呼び出しをオーバーライドする方法

分類Dev

MSVC-オーバーロードされた関数へのC2668のあいまいな呼び出し-コンパイラのバグですか?

Related 関連記事

  1. 1

    オーバーライド関数でオーバーライドされた関数を呼び出す

  2. 2

    Odooオーバーライドされた関数呼び出し順序

  3. 3

    基本クラスのフレンド関数が、プライベートであるにもかかわらず、派生クラスのオーバーライドされた仮想関数をどのように呼び出しているか?(C ++)

  4. 4

    配列内のオブジェクトからオーバーライド関数を呼び出すAngelscript

  5. 5

    コンストラクターまたはinitブロックから呼び出されたオーバーライドされた抽象関数で変数を初期化するときに変数が正しく初期化されない

  6. 6

    テンプレート化されたクラスは、そのタイプの1つで呼び出されたオーバーロードされた非メンバー関数をどのように解決しますか?

  7. 7

    Xamarinは、値を返すオーバーライドから非同期関数を呼び出します

  8. 8

    onclickを呼び出すオーバーライドされた関数が機能しない

  9. 9

    オーバーライドされた関数のパラメータ-operator()c ++を呼び出す

  10. 10

    関数を呼び出さずに、型の基本関数がGoでオーバーライドされているかどうかを確認する方法は?

  11. 11

    SVML からの関数呼び出しのオーバーライド

  12. 12

    オーバーライドされている場合、標準ライブラリから関数を呼び出すことは可能ですか?

  13. 13

    Odoo 12.オーバーライドされた関数をオーバーライドする方法は?

  14. 14

    Javascriptクラスの関数をオーバーライドし、基本関数を呼び出す方法

  15. 15

    AngularJs : 'this' にバインドされたコントローラー関数を外部から呼び出します (例: ブラウザー コンソール)

  16. 16

    このジェネリック関数がオーバーライドされた関数を呼び出さないのはなぜですか

  17. 17

    基本クラスメソッドから基本クラスオーバーライドされた関数を呼び出す

  18. 18

    オーバーライドされた関数を呼び出さないように工夫する-Rubyon Rails

  19. 19

    ユニバーサル参照またはr値参照を使用したオーバーロードされたオーバーライドされた関数の呼び出しがあいまいなのはなぜですか?

  20. 20

    子オーバーライドが呼び出されるときは、常にスーパークラス仮想関数を呼び出します

  21. 21

    次のティックオーバーライド機能は関数が呼び出されますか

  22. 22

    JavaScript関数オブジェクトをオーバーライドしてすべての関数呼び出しをログに記録できますか?

  23. 23

    C ++で基本クラスへのポインターが与えられたときに、派生クラスオブジェクトのオーバーロードされた関数が呼び出されないのはなぜですか?

  24. 24

    ReactNativeのフラットリストにバインドされた異なるコンポーネントから関数を呼び出す方法

  25. 25

    オーバーライドされた関数がJavascriptで呼び出されない(厳密モード)

  26. 26

    関数呼び出しをラップしたり、関数呼び出しをオーバーロードしたりする方法はありますか?

  27. 27

    メソッド呼び出し引数で、解凍されたdictのキーワード引数をオーバーライドする方法は?

  28. 28

    javascriptクロージャ関数呼び出しをオーバーライドする方法

  29. 29

    MSVC-オーバーロードされた関数へのC2668のあいまいな呼び出し-コンパイラのバグですか?

ホットタグ

アーカイブ