PHP 5.4 の traits は新しく導入された機能ですが、中国語で正確に翻訳する方法がわかりません。その実際の目的は、場合によっては複数の継承を使用することですが、PHPには多くの継承がないため、そのようなものが発明されました。
トレイトは、さまざまなクラスから呼び出すことができるメソッドのセットとして理解できますが、トレイトはクラスではありません。インスタンス化できません。まず構文を見てみましょう:
<?php trait myTrait{ function traitMethod1(){} function traitMethod2(){} } //然后是调用这个traits,语法为: class myClass{ use myTrait; } //这样就可以通过use myTraits,调用Traits中的方法了,比如: $obj = new myClass(); $obj-> traitMethod1 (); $obj-> traitMethod2 (); >
次に、特性を使用する理由を見てみましょう。たとえば、ビジネスと個人という 2 つのクラスがあり、どちらもアドレス 属性 を持ちます。従来のアプローチは抽象化することです。次のコードに示すように、両方のクラスが client などの共通の特性を持つ親クラスを作成し、クライアント クラスにアクセス属性 address、business、personal を設定してそれぞれを継承します。
// Class Client class Client { private $address; public getAddress() { return $this->address; } public setAddress($address) { $this->address = $address; } } class Business extends Client{ //这里可以使用address属性 } // Class Inpidual class Inpidual extends Client{ //这里可以使用address属性 }
しかし、別のクラスがある場合はどうでしょうか。同じアドレス属性にアクセスする必要がある呼び出されたオーダー?これは OOP の原則に準拠していないため、オーダー クラスはクライアント クラスを継承できません。このとき、特性を定義してこれらのパブリック プロパティを定義できます。
// Trait Address trait Address{ private $address; public getAddress() { eturn $this->address; } public setAddress($address) { $this->address = $address; } } // Class Business class Business{ use Address; // 这里可以使用address属性 } // Class Inpidual class Inpidual{ use Address; //这里可以使用address属性 } // Class Order class Order{ use Address; //这里可以使用address属性 }
これでさらに便利になりました!
以上が簡単なトレイト使用例を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。