この記事では、LaravelでのTraitの使用法を例を挙げて説明します。参考のために皆さんと共有してください。詳細は次のとおりです:
PHP 公式マニュアルの Trait の定義を見てください:
PHP 5.4.0 以降、PHP は traits と呼ばれるコード再利用の方法を実装しています。
Traits は、PHP のような単一継承言語用に用意されたコード再利用メカニズムです。トレイトは、単一継承言語の制約を軽減し、開発者が異なる階層内の独立したクラスでメソッド セットを自由に再利用できるように設計されています。特性とクラス構成のセマンティクスは、複雑さを軽減し、従来の多重継承とミックスインに関連する典型的な問題を回避する方法を定義します。
Trait はクラスに似ていますが、きめ細かく一貫した方法で機能を組み合わせるようにのみ設計されています。特性を単独でインスタンス化することはできません。これは、従来の継承に水平機能の組み合わせを追加します。つまり、アプリケーション クラスのメンバーを継承する必要がありません。
公式マニュアルには 2 つの例も記載されています:
トレイトの使用例
リーリー特性の優先度
基本クラスから継承されたメンバーは、トレイトによって挿入されたメンバーによってオーバーライドされます。優先順位は、現在のクラスのメンバーがトレイトのメソッドをオーバーライドし、トレイトが継承されたメソッドをオーバーライドすることです。
基本クラスから継承されたメンバーは、挿入された SayWorld トレイトの MyHelloWorld メソッドによってオーバーライドされます。その動作は、MyHelloWorld クラスで定義されたメソッドと一致しています。優先順位としては、現在のクラスのメソッドが特性メソッドをオーバーライドし、特性メソッドが基本クラスのメソッドをオーバーライドします。
リーリー上記のルーチンは次のように出力します:
リーリー上記の内容は、PHP公式Webサイトのマニュアルからのものです。
Laravelでのトレイトの使用法
Trait 機能は、コードの再利用性を向上させるために Laravel で広く使用されています。この記事は、特定の Laravel プロジェクトのほんの一例です。
たとえば、PageController.php コントローラーには show メソッドがあります:
リーリーここでの PageRepository::find() メソッドは使用される Trait メソッドであり、PageRepository.php の名前空間を使用して宣言および導入されます。 リーリー
SlugRepositoryTrait のトレイトは find メソッドを定義します:リーリー
このようにして、Trait をコントロールで使用することができ、コードの適切な再利用が実現します。
個人的な理解:
クラスで Trait を使用するということは、クラスにも Trait で定義された属性とメソッドがあることを意味します。 Traits の使用シナリオは、複数のクラスが同じ属性またはメソッドを使用する場合です。このとき、Traits を使用すると、継承されたクラスを継承することなく、これらの属性またはメソッドをクラスに簡単に追加できます。クラスを垂直方向に拡張し、トレイトはクラスを水平方向に拡張してコードの再利用を実現します。PHPでのトレイトの使い方については、以前の記事「PHPでのトレイトの簡単な使用例」も参考にしてください
この記事はXiaotanブログより転載です http://www.tantengvip.com/2015/12/laravel-trait/
Laravel 関連のコンテンツに興味のある読者は、このサイトの特別トピックをチェックしてください: 「Laravel フレームワークの概要と高度なチュートリアル」、「php 優れた開発フレームワークの概要」、「Smarty テンプレートの基本チュートリアル」、「php の日付と時刻」使い方まとめ』、『phpオブジェクト指向プログラミング入門チュートリアル』、『php文字列(ストリング)使い方まとめ』、『php+mysqlデータベース操作入門チュートリアル』、『php共通データベース操作スキルまとめ』
この記事で説明した内容が、Laravel フレームワークに基づいた PHP プログラムの設計に役立つことを願っています。
興味がありそうな記事: