ホームページ  >  記事  >  バックエンド開発  >  php トレイトの機能は何ですか?

php トレイトの機能は何ですか?

coldplay.xixi
coldplay.xixiオリジナル
2020-07-01 14:25:043861ブラウズ

php traits の機能は、php などの単一継承言語向けに設計されており、開発者が異なる継承システムの複数のクラス間で一連のメソッドを簡単に共有して、発生する問題を軽減できるように設計されています。単一継承による制限。

php トレイトの機能は何ですか?

Traits は、php のような単一継承言語用に設計されています。これは、開発者が異なる継承システムの複数のクラス間で一連のメソッドを簡単に共有し、単一継承によって生じる制限を軽減できるように設計されています。特性とクラスを組み合わせることで、多重継承によって引き起こされる一連の問題を回避できます。

使用方法

まず、公式ドキュメントに記載されている例を見てください:

<?php
trait ezcReflectionReturnInfo {
    function getReturnType() { /*1*/ }
    function getReturnDescription() { /*2*/ }
}
class ezcReflectionMethod extends ReflectionMethod {
    use ezcReflectionReturnInfo;
    /* ... */
}
class ezcReflectionFunction extends ReflectionFunction {
    use ezcReflectionReturnInfo;
    /* ... */
}
?>

上記の例からわかるように、機能セット ezcReflectionReturnInfo getReturnTypegetReturnDescription の 2 つのメソッドが含まれており、次の 2 つのサブクラスは異なる親クラスから継承していますが、use ezcReflectionReturnInfo メソッドで再利用できます。簡単で便利です。

#関連する学習の推奨事項: PHP プログラミングの入門から熟練度まで

#注意事項

    ##サブクラス、親クラス、および use のトレイトに同じ名前のメソッドがある場合、これら 3 つのメソッドの優先順位は次のとおりです: サブクラス > トレイト > 親クラス;
  • 複数のトレイトを同時に使用できますが、同じ名前のトレイトは使用できません;
  • 使用する複数のトレイトでメソッド名が競合する場合は、次のように使用できます。特定の A 特性からメソッドを指定します。例:
  • <?php
    trait A {
        public function smallTalk() {
            echo &#39;a&#39;;
        }
        public function bigTalk() {
            echo &#39;A&#39;;
        }
    }
    trait B {
        public function smallTalk() {
            echo &#39;b&#39;;
        }
        public function bigTalk() {
            echo &#39;B&#39;;
        }
    }
    class Talker {
        use A, B {
            B::smallTalk insteadof A;
            A::bigTalk insteadof B;
        }
    }
    メソッドは as を使用してエイリアスを設定できますが、これはこのクラスでのみ有効です。
  • class Aliased_Talker {
        use A, B {
            B::smallTalk insteadof A;
            A::bigTalk insteadof B;
            B::bigTalk as talk;
        }
    }
    as を使用する場合、メソッドの可視性を変更することもできます。
  • class MyClass2 {
        use HelloWorld { sayHello as private myPrivateHello; }
    }
    特性はネストできます。たとえば、A は B を使用できます。
  • <?php
    trait Hello {
        public function sayHello() {
            echo &#39;Hello &#39;;
        }
    }
    trait World {
        public function sayWorld() {
            echo &#39;World!&#39;;
        }
    }
    trait HelloWorld {
        use Hello, World;
    }
    特性では抽象メソッドを定義できます。同様に、特性を使用するクラスもこれらの抽象メソッドを実装する必要があります。
  • 従来の変数、静的変数、およびメソッドをトレイトで定義できます;

以上がphp トレイトの機能は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。