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 つのクラスがあり、どちらも address 属性を持っています。従来のアプローチは を抽象化することです。
// Class Client class Client { private $address; public getAddress() { return $this->address; } public setAddress($address) { $this->address = $address; } } class Business extends Client{ //这里可以使用address属性 } // Class Individual class Individual extends Client{ //这里可以使用address属性 }
// 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 Individual class Individual{ use Address; //这里可以使用address属性 } // Class Order class Order{ use Address; //这里可以使用address属性 }
rrreee