ホームページ  >  記事  >  バックエンド開発  >  PHPのTraitsの詳しい説明、PHPTraits_PHPチュートリアルの詳しい説明

PHPのTraitsの詳しい説明、PHPTraits_PHPチュートリアルの詳しい説明

WBOY
WBOYオリジナル
2016-07-13 09:45:541186ブラウズ

PHP のトレイトの詳細な説明、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

本当http://www.bkjia.com/PHPjc/1039182.html技術記事 PHP のトレイトの詳細な説明、PHP トレイトの詳細な説明 PHP 5.4 トレイトが登場する前は、PHP クラスは 2 つの基本クラスからプロパティやメソッドを同時に継承できませんでした。 php と Go 言語の特徴...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。