当前位置:首页 > PHP教程 > php高级应用 > 列表

PHP中的traits简单使用实例

发布:smiling 来源: PHP粉丝网  添加日期:2021-05-26 21:50:54 浏览: 评论:0 

这篇文章主要介绍了PHP中的traits简单使用实例,本文着重讲解traits的语法、traits有什么作用、什么情况下使用traits,需要的朋友可以参考下

PHP 5.4中的traits,是新引入的特性,中文还真不知道如何准确翻译好。其实际的目的,是为了有的场合想用多继承,但PHP又没多继承,于是就发明了这样的一个东西。

Traits可以理解为一组能被不同的类都能调用到的方法集合,但Traits不是类!不能被实例化。先来例子看下语法:

  1. <?php 
  2. trait myTrait{ 
  3.   function traitMethod1(){} 
  4.   function traitMethod2(){} 
  5.  
  6.  
  7. //然后是调用这个traits,语法为: 
  8. class myClass{ 
  9.   use myTrait; 
  10.  
  11. //这样就可以通过use myTraits,调用Traits中的方法了,比如: 
  12. $obj = new myClass(); 
  13. $obj-> traitMethod1 (); 
  14. $obj-> traitMethod2 ();  

接下来,我们探究下为什么要用traits,举个例子,比如有两个类,分别为business(商务者)和Individual(个人),它们都有地址的属性,传统的做法是,再抽象出一个这两个类都共同有特性的父类,比如client,在client类中设置访问属性address,business和individual分别继承之,如下代码:

  1. // Class Client  
  2. class Client {  
  3.   private $address;  
  4.   public getAddress() {  
  5.     return $this->address;  
  6.   }     
  7.   public setAddress($address) {  
  8.     $this->address = $address;   
  9.   }  
  10. }  
  11.      
  12. class Business extends Client{  
  13.   //这里可以使用address属性  
  14. }  
  15.  
  16. // Class Individual  
  17. class Individual extends Client{  
  18. //这里可以使用address属性  
  19. }  

但假如又有一个叫order类的,需要访问同样的地址属性,那怎么办呢?order类是没办法继承client类的,因为这个不符合OOP的原则。这个时候traits就派上用场了,可以定义一个traits,用来定义这些公共属性。

  1. // Trait Address 
  2. trait Address{ 
  3.   private $address
  4.   public getAddress() { 
  5.     eturn $this->address; 
  6.   } 
  7.   public setAddress($address) { 
  8.     $this->address = $address
  9.   } 
  10. // Class Business 
  11. class Business{ 
  12.   use Address; 
  13.   // 这里可以使用address属性 
  14. // Class Individual 
  15. class Individual{ 
  16.   use Address; 
  17.   //这里可以使用address属性 
  18. // Class Order 
  19. class Order{ 
  20.   use Address; 
  21.   //这里可以使用address属性 

这样就方便多了!

Tags: traits

分享到: