<!DOCTYPE html>
<html>
 <head>
      <meta charset="UTF-8" />
     <meta name="author" content="Manuele" />
    <title> Exemple foreach</title>
    
    <style>
          table { border-collapse : collapse; }
          table, td { border : 1px solid black; border-spacing: 3px; padding : 5px; }
          table, th { border : 1px solid black; border-spacing: 3px; padding : 5px; 
                           background-color : rgb(200,200, 255); }
          tr:nth-child(even) { background-color : rgb(200,200,255);  }
          tr:nth-child(odd)  {  background-color : white; }
    </style>
 </head>
 <body>
     <h1>Exemple foreach</h1>
     
     <?php        
           
/* pour illustrer nos propos, on va creer une petite classe Client */ 
          
class ClientPublic {
                public 
$nom;
                public 
$prenom
                public 
$adresse;
           }
      
          
//on rempli un objet ClientPublic     
            
$client = new ClientPublic();
          
$client->nom "Dupont ";
          
$client->prenom "Jean ";
          
$client->adresse "adresse ";
        
         
//maintenant on utilise le foreach pour afficher les clients 
         
echo "<ul>" ;
         foreach (
$client as $cle=>$valeur) {
             echo 
"<li> $cle :  $valeur </li>" ;
           }      
         echo 
"</ul>";
         
         
/* par contre, ça ne marche que parce que les attributs sont public */
         
         
         /* essayons avec des attributs qui ne sont pas publiques */
          
include "Employe.php" ;

         
//on va creer un objet Employee
         
$emp = new Employe();
         
$emp->setNom("Toto");
         
$emp->augmentation(0.15);
                    
         
//on affiche une fois l'objet pour montrer qu'il est bien là
          
echo "<ol> <li> nom " $emp->getNom() . "</li> " 
                    
" <li> salaire " .  $emp->getSalaire() . "</li> </ol>" 
        
         
/* pour chaque attribut dans un objet : ça ne marche pas à cause de la visibilité
           private. On ne vera donc pas les lignes ci-dessous (en ul) */
         
echo "<ul>" ;        
          foreach (
$emp as $att=>$val) {
                 echo 
" <li> " $att " = " $val " </li> "
           }     
          echo 
"</ul>" ;    
          
          
          
          
          
/* on peut même essayer avec les fonctions "magiques" (getter et setter comme dans VBA)
            ça ne marche toujours pas dès que la visibilité des attributs est private */
          
include ("Client.php");
          
          
//on va créer un nouveau client    
            
$client = new Client();
            
$client->id 2;
          
$client->nom "Philippe Martin";
          
$client->email "pmartin@serveur.com";
          
$client->adresse "adresse de P. Martin";
          
          
//on affiche une fois l'objet pour montrer qu'il est bien là
          
echo "<ol> <li> nom " $client->nom "</li> " 
                    
" <li> email " .  $client->email "</li> "
                    
" <li> adresse " $client->adresse "</li> </ol>" 
        
        
/* pour chaque attribut dans un objet : ça ne marche pas à cause de la visibilité
           private. On ne vera donc pas les lignes ci-dessous (en ul) */         
         
echo "<ul>" ;        
          foreach (
$client as $att=>$val) {
                 echo 
" <li> " $att " = " $val " </li> "
           }     
          echo 
"</ul>" ;    
          
     
?>
         
 </body>
 </html>