<?php
 // === Trait TraitControl ===
 trait TraitControl {
  public function AfficheAdresse() {
   echo get_called_class().'-Accès à l\'entreprise par le: ';
   echo $this->AdresseAcces.PHP_EOL;
  }
  public function getAdresse() {
   return $this->AdresseAcces;
  }
 }
 // === Trait TraitAcces ===
 trait TraitAcces {
  public function setAdresse($ad) {
   $this->AdresseAcces=$ad;
  }
  public function getAdresse() {
   return $this->AdresseAcces." - 75010 Paris";
  }
 }
 // === Classe Personnel ===
 class Personnel {
  private $AdresseAcces;
  use TraitControl, TraitAcces {
    TraitControl::getAdresse insteadof TraitAcces;
  }
 }
 // === Classe Livraison ===
 class Livraison {
  private $AdresseAcces;
  use TraitControl, TraitAcces {
    TraitAcces::getAdresse insteadof TraitControl;
  }
 }
 // === Programme ===
 // Création salarié et affichage porte d'accès
 $UnSalarie = new Personnel()                         ;
 $UnSalarie->setAdresse("21 rue Blum")                ; 
 echo "Personnel : ".$UnSalarie->getAdresse().PHP_EOL ; 
 // Création livraison  et affichage porte d'accès
 $UneLivraison = new Livraison()                        ;
 $UneLivraison->setAdresse("Quai de numéro 2")          ; 
 echo "Livraison : ".$UneLivraison->getAdresse().PHP_EOL; 
?>