Traits は、PHP のような単一継承言語用に用意されたコード再利用メカニズムです。特性 単一継承言語の制限を軽減するために、開発者は異なる階層内の独立したクラスでメソッド セットを自由に再利用できます
PHP 5.4.0 以降、PHP は traits と呼ばれるコード再利用のメソッドを実装しました。
Traits は、PHP のような単一継承言語用に用意されたコード再利用メカニズムです。トレイトは、単一継承言語の制約を軽減し、開発者が異なる階層内の独立したクラスでメソッド セットを自由に再利用できるように設計されています。特性とクラス構成のセマンティクスは、複雑さを軽減し、従来の多重継承とミックスインに関連する典型的な問題を回避する方法を定義します。
Trait はクラスに似ていますが、きめ細かく一貫した方法で機能を組み合わせるようにのみ設計されています。特性を単独でインスタンス化することはできません。これは、従来の継承に水平機能の組み合わせを追加します。つまり、アプリケーション クラスのメンバーを継承する必要がありません。
Trait は PHP5.4 で追加されたもので、インターフェイスでもクラスでもありません。主に単一継承言語の制限を解決するためです。これは、PHP における多重継承の解決策です。たとえば、2 つの抽象クラスを同時に継承するのは非常に面倒です。Trait はこの問題を解決するように設計されています。 1 つ以上の既存のクラスに追加できます。クラスが実行できることを宣言し (インターフェイスの特性を示し)、特定の実装も含めます (クラスの特性を示します)
使い方は簡単
まず最初に、もちろん、PHP5.4 で追加された Trait を宣言します。特性キーワード
trait first_trait { function first_method() { /* Code Here */ } function second_method() { /* Code Here */ } }
同時に、この特性をクラスで使用したい場合は、 use キーワード
class first_class { // 注意这行,声明使用 first_trait use first_trait; } $obj = new first_class(); // Executing the method from trait $obj->first_method(); // valid $obj->second_method(); // valid
複数の特性を使用する
で複数の特性を使用できます同じクラスの特性
trait first_trait { function first_method() { echo "method"; } } trait second_trait { function second_method() { echo "method"; } } class first_class { // now using more than one trait use first_trait, second_trait; } $obj= new first_class(); // Valid $obj->first_method(); // Print : method // Valid $obj->second_method(); // Print : method
特性間のネスト
同時に、
trait first_trait { function first_method() { echo "method"; } } trait second_trait { use first_trait; function second_method() { echo "method"; } } class first_class { // now using use second_trait; } $obj= new first_class(); // Valid $obj->first_method(); // Print : method // Valid $obj->second_method(); // Print : method
特性の抽象メソッド
のように、特性同士を入れ子にすることもできます。
トレイト内で実装する必要がある抽象メソッドを宣言し、それを使用するクラスがそれを実装する必要があるようにすることができます
trait first_trait { function first_method() { echo "method"; } // 这里可以加入修饰符,说明调用类必须实现它 abstract public function second_method(); } class first_method { use first_trait; function second_method() { /* Code Here */ } }
トレイトの競合
複数のトレイトを同時に使用すると、必然的に競合が発生します。これには解決する必要があります。 PHP5.4 では、文法面から関連するキーワード構文を導入しています。注意すべき点がいくつかあります:
Trait は呼び出しクラスによって継承された親クラスのメソッドをオーバーライドしますTrait はクラスのような new を使用してインスタンス化できません
1 つの Trait は複数の Traits で構成できます 概要: 以上です コンテンツ全体この記事の内容が皆さんの学習に役立つことを願っています。
PHPの抽象クラスと抽象メソッドの概念と使用例の分析
PHPのクラスの継承と使用例の詳細な説明php Web サイトのルート ディレクトリの物理パス 方法
以上がPHP の Trait の特性と機能を例とともに詳しく説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。