1. php にはどのような特性があるかご存知ですか?
これはクラスとインターフェイスの両方のように見えますが、実際にはどちらでもありません。
Trait は、1 つ以上の既存の PHP クラスに混合できるクラスの部分的な実装と見なすことができ、クラスが実行できることを示す機能と、モジュール実装を提供する機能の 2 つがあります。 Trait は、PHP の単一継承制限に対する柔軟なコード再利用メカニズムを提供するコード再利用テクノロジです。
2. PHP バージョン要件:
トレイトは php5.4 以降導入されており、その目的はコードの重複を減らし、コードの再利用性を高めることです。
3. トレイトの使用シナリオ:
次のような状況を想像してください。メソッドを多くのクラスで使用する必要がある場合、どのように対処すればよいでしょうか?
通常、一般的なアプローチは、基本クラスを作成し、このメソッドを基本クラスに実装し、すべてのクラスがこの基本クラスを継承することです。
これは対処方法ですが、最善の対処方法ではありません。継承は通常、複数のクラスに大きな類似性がある場合に使用されます。たとえば、people は基本クラスであり、学生や労働者などは基本クラスの「people」を継承して拡張します。
ここでトレイトの役割が出てきますが、トレイトは複数のクラスで使用することができます。
4. 特性の使用方法:
PHP マニュアルの例を引用:
例 1
<?php trait ezcReflectionReturnInfo { function getReturnType() { /*1*/ } function getReturnDescription() { /*2*/ } } class ezcReflectionMethod extends ReflectionMethod { use ezcReflectionReturnInfo; /* ... */ } class ezcReflectionFunction extends ReflectionFunction { use ezcReflectionReturnInfo; /* ... */ } ?>
1. 最初に特性を宣言します;
2. クラス内で use を使用して特性を紹介します。
それは非常に簡単です (手動エスケープ)?注意すべきは特性の優先順位です。
(無料の学習ビデオ共有: php ビデオ チュートリアル)
5. 特性の優先順位
(黒板をノック) 基本クラスから継承されたメンバー特性によって挿入されたメンバーによって上書きされます。優先順位は、現在のクラスのメンバーがトレイトのメソッドをオーバーライドし、トレイトが継承されたメソッドをオーバーライドすることです。
優先順位: 独自のメソッド > トレイト メソッド > 継承されたメソッド (このように見えます。)
例を見てください
<?php trait HelloWorld { public function sayHello() { echo 'Hello World!'; } } class TheWorldIsNotEnough { use HelloWorld; public function sayHello() { echo 'Hello Universe!'; } } $o = new TheWorldIsNotEnough(); $o->sayHello();//输出是 Hello Universe! ?>
もう 1 つ注意すべき点は、次のとおりです。複数の特性。
<?php trait Hello { public function sayHello() { echo 'Hello '; } } trait World { public function sayWorld() { echo 'World'; } } class MyHelloWorld { use Hello, World; public function sayExclamationMark() { echo '!'; } } $o = new MyHelloWorld(); $o->sayHello(); $o->sayWorld(); $o->sayExclamationMark(); ?>
概要: Trait は、PHP の単一継承制限に対する柔軟なコード再利用メカニズムを提供するコード再利用テクノロジです。
関連する推奨事項: php チュートリアル
以上がPHPでトレイトを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。