Traits は、PHP のような単一継承言語用に用意されたコード再利用メカニズムです。トレイトは、単一継承言語の制約を軽減し、開発者が異なる階層内の独立したクラスでメソッド セットを自由に再利用できるように設計されています。
PHP 5.4.0 以降、PHP は traits と呼ばれるコード再利用の方法を実装しています。
Traits は、PHP のような単一継承言語用に用意されたコード再利用メカニズムです。トレイトは、単一継承言語の制約を軽減し、開発者が異なる階層内の独立したクラスでメソッド セットを自由に再利用できるように設計されています。特性とクラス構成のセマンティクスは、複雑さを軽減し、従来の多重継承とミックスインに関連する典型的な問題を回避する方法を定義します。
Trait はクラスに似ていますが、きめ細かく一貫した方法で機能を組み合わせるようにのみ設計されています。特性を単独でインスタンス化することはできません。これは、従来の継承に水平機能の組み合わせを追加します。つまり、アプリケーション クラスのメンバーを継承する必要がありません。
Trait は PHP5.4 で追加されたもので、インターフェイスでもクラスでもありません。主に単一継承言語の制限を解決するためです。これは、PHP における多重継承の解決策です。たとえば、2 つの抽象クラスを同時に継承するのは非常に面倒です。Trait はこの問題を解決するように設計されています。 1 つ以上の既存のクラスに追加できます。クラスが実行できることを宣言し (インターフェイスの特性を示し)、特定の実装も含めます (クラスの特性を示します)
使い方は簡単
まず最初に、もちろん、PHP5.4 で追加された Trait を宣言します。特性キーワード
1 2 3 4 |
|
同時に、クラスで特性を使用したい場合は、 use キーワードを使用します
1 2 3 4 5 6 7 8 |
|
複数の特性を使用する
同じクラスで複数の特性を使用できます
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
トレイト間のネスト
同時に、
1 2 3 4のように、トレイト同士をネストすることもできます。 5 6 7 8 9 10 11 12 13 14 15 16 |
|
Trait の抽象メソッド
Trait で実装する必要がある抽象メソッドを宣言できるため、それを使用するクラスはそれを実装する必要があります
1 2 3 4 5 6 7 8 9 10 11 |
|
特性の競合
複数の特性を同時に使用すると、必然的に競合が発生するため、これを解決する必要があります。 PHP5.4 では、文法の観点から関連するキーワード構文: 代わりにと as が導入されました。
11
12
13
14
15
16
17
18
19
20
21
trait first_trait {
function
first_function() {
echo
"From First Trait"
;
}
}
trait second_trait {
// 这里的名称和 first_trait 一样,会有冲突
function
first_function() {
echo
"From Second Trait"
;
}
}
class
first_class {
use
first_trait, second_trait {
// 在这里声明使用 first_trait 的 first_function 替换
// second_trait 中声明的
first_trait::first_function insteadof second_trait;
}
}
$obj
=
new
first_class();
// Output: From First Trait
$obj
->first_function();
上記はトレイトの基本的な使い方です。詳しくは公式マニュアルを参照してください。注意すべき点がいくつかあります:
Trait は呼び出しクラスによって継承された親クラスのメソッドをオーバーライドします概要について 詳細な説明PHP のトレイトとそのアプリケーションについて
以上がPHPにおけるTraitの特徴と機能の共有の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。