この記事では主に thinkPHP5.0 フレームワークで導入された Traits 関数を紹介し、サンプルの形で Traits の概念と機能を分析し、thinkPHP5.0 での Traits 関数の使用方法を説明します。必要な友人は参考にしてください。
この記事では、thinkPHP5.0 フレームワークが Traits 関数を導入する例について説明します。参考のために皆さんと共有してください。詳細は次のとおりです: ThinkPHP 5.0 では、クラス ライブラリで複数の継承の問題を簡単に実装できる拡張メカニズムとして trait 関数 (PHP5.4+) が使用され始めました。Traits は、PHP のような単一継承言語用に用意されたコード再利用メカニズムです。トレイトは、単一継承言語の制約を軽減し、開発者が異なる階層内の独立したクラスでメソッド セットを自由に再利用できるように設計されています。特性とクラス構成のセマンティクスは、複雑さを軽減し、従来の多重継承とミックスインに関連する典型的な問題を回避する方法を定義します。
ただし、PHP5.4バージョンはトレイトの自動ロードをサポートしていないため、PHP5.4バージョンの場合はトレイトクラスライブラリを手動でインポートする必要があります。システムはトレイトを自動的にロードするためのヘルパー関数load_traitを提供します。 class library 、たとえば trait クラス ライブラリは次のように正しく導入できます。
namespace app\index\controller; load_trait('controller/Jump'); // 引入traits\controller\Jump class index { use \traits\controller\Jump; public function index() { $this->assign('name','value'); $this->show('index'); } }
関数を省略して trait を導入できます。
namespace app\index\controller; class index { use \traits\controller\Jump; public function index() { } }
namespace app\index\controller; load_trait('controller/Other'); load_trait('controller/Jump'); class index { use \traits\controller\Other; use \traits\controller\Jump; public function index() { } }
namespace app\index\controller; load_trait('controller/Other'); load_trait('controller/Jump'); class index { use \traits\controller\Other,\traits\controller\Jump; public function index() { } }
controller と model クラスの拡張に使用される、いくつかのカプセル化された特性クラス ライブラリを提供します。 。これらのシステムの組み込み特性ライブラリのルート 名前空間 は、システムのキーワードとの競合を避けるために、特性の代わりに特性を使用します。
trait メソッドによって導入されたクラス ライブラリは、基本クラスから継承されたメンバーが trait によって挿入されたメンバーによって上書きされることに注意する必要があります。優先順位は、現在のクラスのメンバーがトレイトのメソッドをオーバーライドし、トレイトが継承されたメソッドをオーバーライドすることです。 特性クラスは、クラス定数の定義をサポートしていません。特性で定義されたプロパティは、現在のクラスまたは継承されたクラスで再定義できません。競合の解決
複数のトレイト ライブラリを 1 つのクラス ライブラリに導入できます。両方のトレイトが同じ名前のメソッドを定義している場合、競合が明示的に解決されないと致命的なエラーが発生します。 同じクラス内の複数の特性の名前の競合を解決するには、代わりに演算子 を使用して、競合するメソッドのどれを使用するかを明示的に指定する必要があります。
上記のメソッドでは、他のメソッドを除外することのみが可能です。as 演算子は、競合するメソッドの 1 つを別の名前で導入できます。以上がthinkPHP5.0 フレームワークに導入された Traits 関数のコード共有例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。