<!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>