PHP中的traits簡單使用執行個體_PHP

來源:互聯網
上載者:User
關鍵字 PHP traits 使用執行個體
PHP 5.4中的traits,是新引入的特性,中文還真不知道如何準確翻譯好。其實際的目的,是為了有的場合想用多繼承,但PHP又沒多繼承,於是就發明了這樣的一個東西。
Traits可以理解為一組能被不同的類都能調用到的方法集合,但Traits不是類!不能被執行個體化。先來例子看下文法:

<?phptrait myTrait{  function traitMethod1(){}  function traitMethod2(){}}//然後是調用這個traits,文法為:class myClass{  use myTrait;}//這樣就可以通過use myTraits,調用Traits中的方法了,比如:$obj = new myClass();$obj-> traitMethod1 ();$obj-> traitMethod2 (); >

  接下來,我們探究下為什麼要用traits,舉個例子,比如有兩個類,分別為business(商務者)和Individual(個人),它們都有地址的屬性,傳統的做法是,再抽象出一個這兩個類都共同有特性的父類,比如client,在client類中設定訪問屬性address,business和individual分別繼承之,如下代碼:

// 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屬性 } 

  但假如又有一個叫order類的,需要訪問同樣的地址屬性,那怎麼辦呢?order類是沒辦法繼承client類的,因為這個不符合OOP的原則。這個時候traits就派上用場了,可以定義一個traits,用來定義這些公用屬性。

// Trait Addresstrait Address{  private $address;  public getAddress() {    eturn $this->address;  }  public setAddress($address) {    $this->address = $address;  }}// Class Businessclass Business{  use Address;  // 這裡可以使用address屬性}// Class Individualclass Individual{  use Address;  //這裡可以使用address屬性}// Class Orderclass Order{  use Address;  //這裡可以使用address屬性}   

這樣就方便多了!

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.