Traitを使用してPHPの単一継承問題を解決する方法の詳細な説明

青灯夜游
リリース: 2023-04-10 22:08:01
転載
4255 人が閲覧しました

PHP 単一継承の呪いを解く方法は?以下の記事では、PHP における単一継承の問題を Trait を使って解決する方法を紹介しますので、ご参考になれば幸いです。

Traitを使用してPHPの単一継承問題を解決する方法の詳細な説明

PHP が単一継承言語であることは誰もが知っていますが、ビジネスに関係のない 2 つのクラスが同様の動作をする場合があります。 DRY(同じことを繰り返さない)?

答えは、Traitを導入することです

Traitの紹介

Traitは、PHP 5.4で導入された新しい概念です。クラスのようなもの インターフェイスのようなもの。 [推奨学習: "PHP ビデオ チュートリアル "]

実際には、どちらでもありません。トレイトはクラスの部分実装とみなされ、1 つ以上の既存の PHP に混合できます。クラス。

Trait は、PHP の単一継承制限に対する柔軟なコード再利用メカニズムを提供するコード再利用テクノロジです。

#Trait 関数

  • クラスができることを示します;

  • モジュール実装を提供します。

  • #単一継承構造

冒頭で

PHP は単一継承言語であると述べましたが、私たちのいつもの習慣は次のとおりです。

まず、基本的な関数を実装するための一般的な基本クラスを作成し、一般的なロジックをカプセル化してから、この基本クラスを拡張します。
  • 次に、より具体的なサブクラスであるクラス、実装を作成します。親クラスから直接継承されます。
  • これは単一継承階層と呼ばれ、多くのプログラミング言語がこのパターンを使用します。
この典型的な継承モデルはほとんどの場合うまく機能しますが、無関係な 2 つの PHP クラスを同様に動作させたい場合はどうすればよいでしょうか?

サンプル ソース コード

組み込みの

LoginController

を例として、Laravel のソース コードを確認しました。ログイン認証は Trait によって実装されています。

##特性の作成

Traitを使用してPHPの単一継承問題を解決する方法の詳細な説明特性の作成は非常に簡単です。使用するキーワードが

trait

である点を除けば、クラスの作成と似ています。

class

の例として、上記の AuthenticatesUsers を取り上げます。

traitTraitを使用してPHPの単一継承問題を解決する方法の詳細な説明 を通じて定義するもの宣言はトレイトであり、このトレイトはクラスのように使用されるプロパティとメソッドを定義します。

さらに、特性はネストと組み合わせをサポートしています。つまり、1 つ以上の特性 (複数は で区切られています) が 1 つの特性に結合されます。たとえば、AuthenticatesUsers は次のようになります。

注: Trait は、抽象メソッドと静的メソッドの定義もサポートしています。抽象メソッドは、それを使用するクラスに実装する必要があります。 Traitを使用してPHPの単一継承問題を解決する方法の詳細な説明

メソッド呼び出しの優先順位:

呼び出しクラス>トレイト>親クラス (存在する場合)。メソッドはオーバーライドできますが、属性ではありません。

注: プロパティが Trait で定義されている場合、このプロパティが呼び出し側のクラスでも定義されている場合は、エラーが報告されます。

Trait の使用

Trait の使用方法も非常に簡単で、上のスクリーンショットの例はそれを非常に明確に示しています: use useキーワード。

導入場所

注: 名前空間と特性はどちらも use キーワードを使用して導入されます。違いはインポート場所

にあります。名前空間はクラス定義の外部にインポートされますが、特性はクラス定義本体の内部に

インポートされます。

コンパイルの問題Traitを使用してPHPの単一継承問題を解決する方法の詳細な説明

Trait と Trait を参照するクラスに同じプロパティとメソッドがある場合、次の場合にそれらを使用する必要があります。外部呼び出し instansofキーワードは、メソッドがクラスであるかトレイトであるかを示します。

PHP インタープリターはコンパイル中に Trait をクラスの定義本体にコピーしますが、この操作によって生じる非互換性の問題は処理しないため、互換性の問題を解決する必要があります。 プログラミング関連の知識について詳しくは、

プログラミング教育

をご覧ください。 !

以上がTraitを使用してPHPの単一継承問題を解決する方法の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:juejin.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
関連するチュートリアル
人気のおすすめ
最新のコース
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート