ホームページ >バックエンド開発 >PHPチュートリアル >簡単なトレイト使用例を詳しく解説

簡単なトレイト使用例を詳しく解説

伊谢尔伦
伊谢尔伦オリジナル
2017-07-03 11:21:561398ブラウズ

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。