ホームページ >バックエンド開発 >PHPチュートリアル >PHPのTraitsの詳しい説明、PHPTraits_PHPチュートリアルの詳しい説明
PHP は単一継承言語であり、PHP 5.4 トレイトが登場する前は、PHP クラスは 2 つの基本クラスから同時にプロパティやメソッドを継承できませんでした。 PHP の Trait の結合機能は Go 言語の結合機能と似ていますが、結合する Trait の名前はクラス内で use キーワードを使用して宣言されます。ただし、特定の Trait の宣言には trait キーワードが使用されません。直接インスタンス化されます。具体的な使用方法については、以下のコードを参照してください:
リーリー出力結果は以下の通りです:
リーリー上記の例では、Studentクラスは、personを継承することでeatメソッドを持ち、Driveを組み合わせることで、ドライビングメソッドと属性carNameを持ちます。
Trait、基底クラス、このクラスに同名のプロパティやメソッドがあった場合、最終的にどちらが保持されるのでしょうか?次のコードでテストしてください:
リーリー出力結果は以下の通りです:
リーリー結論は次のとおりです。メソッドまたはプロパティが同じ名前を持つ場合、現在のクラスのメソッドはトレイトのメソッドをオーバーライドし、トレイトのメソッドは基本クラスのメソッドをオーバーライドします。
複数の特性を組み合わせたい場合は、特性名をカンマで区切ってください:
特性1、特性2を使用します;
複数のトレイトに同じ名前のメソッドまたはプロパティが含まれている場合はどうなりますか?その答えは、結合された複数の特性に同じ名前のプロパティまたはメソッドが含まれている場合、競合を解決するにはそれらを明示的に宣言する必要がある、そうしないと致命的なエラーが発生するということです。
リーリー出力結果は以下の通りです:
リーリー競合を解決するには、代わりにメソッドと as 演算子を使用します。代わりに、メソッドにエイリアスを与えます。具体的な使用方法については、コードを参照してください。
リーリー
出力結果は以下の通りです:リーリー
as キーワードには、メソッドのアクセス制御を変更するという別の用途もあります。リーリー
Trait は Trait と組み合わせることもできます。 Trait は抽象メソッド、静的プロパティ、静的メソッドをサポートします。 テストコードは次のとおりです。 リーリー出力結果は以下の通りです:
リーリー以上がこの記事の全内容です、皆様の学習のお役に立てれば幸いです。
http://www.bkjia.com/PHPjc/1039182.html