Maison  >  Article  >  développement back-end  >  Explication détaillée d'exemples d'utilisation de traits simples

Explication détaillée d'exemples d'utilisation de traits simples

伊谢尔伦
伊谢尔伦original
2017-07-03 11:21:561377parcourir

Les traits de PHP 5.4 sont une fonctionnalité nouvellement introduite, je ne sais vraiment pas comment la traduire avec précision en chinois. Son objectif réel est d'utiliser l'héritage multiple dans certaines situations, mais PHP n'a pas d'héritage multiple, donc une telle chose a été inventée.

Les traits peuvent être compris comme un ensemble de méthodes qui peuvent être appelées par différentes classes, mais les traits ne sont pas des classes ! Ne peut pas être instancié. Prenons d'abord un exemple pour examiner la syntaxe :

<?php
trait myTrait{
  function traitMethod1(){}
  function traitMethod2(){}

}

//然后是调用这个traits,语法为:
class myClass{
  use myTrait;
}

//这样就可以通过use myTraits,调用Traits中的方法了,比如:
$obj = new myClass();
$obj-> traitMethod1 ();
$obj-> traitMethod2 (); 
>

Ensuite, explorons pourquoi les traits sont utilisés. Par exemple, il existe deux classes, à savoir business (homme d'affaires) et individuel (individu). tous ont l'attribut d'adresse . L'approche traditionnelle consiste à faire abstraction d'une classe parent dont les deux classes ont des caractéristiques communes, telles que client, et à définir les attributs d'accès adresse, entreprise et individuel dans la classe client, en hériter respectivement. , le code suivant :

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

Mais que se passe-t-il s'il existe une autre classe appelée order qui doit accéder au même attribut d'adresse ? La classe de commande ne peut pas hériter de la classe client car cela n'est pas conforme aux principes de la POO. Les traits sont utiles à ce stade. Vous pouvez définir un trait pour définir ces propriétés publiques.

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

C'est bien plus pratique !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn