<?php
 // === Classe Personnel ===
 class Personnel
 { // -- Les propriétés --
   protected $nom    ;
   protected $prenom ;
   // -- constructeur --
   function __construct($n,$p)
   { $this->nom    = strtoupper(trim($n)) ;
     $this->prenom = strtoupper(trim($p)) ;
   }
   public function Affiche() {
     echo "Nom: ".$this->nom;
     echo "  -  Prénom: ".$this->prenom.PHP_EOL;
   }   
 }
 // === Classe Cadre ===
 class Cadre extends Personnel
 { // -- Les propriétés --
   private $_tel   ;
   // -- constructeur --
   function __construct($n,$p,$t)
   { parent::__construct($n,$p); //constructeur parent
     $this->_tel   = trim($t) ;
   }
   public function Affiche() {  // surcharge
     parent::Affiche();
     echo "  -  Tel: ".$this->_tel.PHP_EOL;
   }   
 }
  // === Classe Directeur ===
 class Directeur extends Cadre
 { // -- Les propriétés --
   private $_assistant   ;
   // -- constructeur --
   function __construct($n,$p,$t,$a)
   { parent::__construct($n,$p,$t); //constructeur parent
     $this->_assistant   = trim($a) ;
   }
   public function Affiche() {  // surcharge
     parent::Affiche();
     echo "  -  Assistant: ".$this->_assistant.PHP_EOL;
   }   
 }
 // === Programme ===
 /*
 $un_salarie = new Personnel("martin","pierre") ;
 $un_salarie->Affiche() ;//Méthode de la Classe Personnel
 $un_cadre = new Cadre("dupont","jean","0143451122")   ;
 $un_cadre->Affiche() ;// Méthode de la Classe Cadre
 */
 $un_directeur = new Directeur("lefevre","paul","0600112233","pignon")   ;
 $un_directeur->Affiche() ;// Méthode de la Classe Directeur
 $est_instance_D = $un_directeur instanceOf Directeur;
 $est_instance_C = $un_directeur instanceOf Cadre;
 $est_instance_P = $un_directeur instanceOf Personnel;
 echo '$un_directeur'." instance de Directeur : "; 
 var_dump($est_instance_D);
 echo '$un_directeur'." instance de Cadre : "; 
 var_dump($est_instance_C);
 echo '$un_directeur'." instance de Personnel : "; 
 var_dump($est_instance_P);
/* 

 $est_instance_D = $un_cadre instanceOf Directeur;
 $est_instance_C = $un_cadre instanceOf Cadre;
 $est_instance_P = $un_cadre instanceOf Personnel;
 echo '$un_cadre'." instance de Directeur : "; 
 var_dump($est_instance_D);
 echo '$un_cadre'." instance de Cadre : "; 
 var_dump($est_instance_C);
 echo '$un_cadre'." instance de Personnel : "; 
 var_dump($est_instance_P);

 $est_instance_D = $un_salarie instanceOf Directeur;
 $est_instance_C = $un_salarie instanceOf Cadre;
 $est_instance_P = $un_salarie instanceOf Personnel;
 echo '$un_salarie'." instance de Directeur : "; 
 var_dump($est_instance_D);
 echo '$un_salarie'." instance de Cadre : "; 
 var_dump($est_instance_C);
 echo '$un_salarie'." instance de Personnel : "; 
 var_dump($est_instance_P); 
 */
?>
