Programmation objet

Vous pouvez récupérer sur le projet git

https://dwarves.iut-fbleau.fr/git/monnerat/wim21.git

pour chaque exercice un squelette à compléter.

  1. Voici la définition d'une classe personne :

    <?php
    class personne {
    	public $id=null;
    	public $nom;
    	public $prenom;
    }
    ?>

    Ajoutez :

    • Un constructeur__construct
    • Une méthode d'affichage __toString

    Testez

  2. Dérivez la classe précédente en contact en rajoutant un attribut email. Rédéfinissez le constructeur et la méthode d'affichage.
  3. On veut stocker nos contacts dans une base de données. Créez une table correspondante sur le serveur mysql.

    Le dialogue avec le serveur, établi au moyen de PDO, sera centraliser dans une classe Database :

    <?php
    class Database {
    	static protected $_instance = null;
    	protected $_db;
     
    	static public function getInstance() {
    	}
    	public function query($sql){
    	}
    	public function prepare($sql){
    	}
    	public function lastId(){
    	}
    	protected function __construct() {
    	}
    }
    ?>

    Compléter la classe

    Le lien ($_db) avec la base mysql sera aussuré par un objet de type PDO.

    La classe Database implante le patron de conception singleton. Le principe est de restreindre l'instanciation de la classe à un seul objet, ici pour éviter les connexions multiples au serveur de bases de données.

    La classe contient la méthode statique getInstance qui crée une instance uniquement s'il n'en existe pas encore. Sinon elle renvoie une référence vers l'objet qui existe déjà $_instance. Le constructeur n'est pas accessible de l'extérieur, et c'est lui qui établira la connexion avec le serveur en stockant le lien dans $_bd.

    query et prepare encapsule les méthodes du même nom de PDO.

    lastId encapsute la méthode lastInsertId de PDO.

  4. Ajoutez à la classe contact les méthodes

    public static function getFromId($id)
    public static function getList()
    public function save()

    qui permettent de récupérer des contacts depuis la base de données, et de sauver un contact.

    Testez

    Remarque

    On peut récupérer avec PDO, directement le(s) résultat(s) d'un select en précisant le "fetchMode" :

    $stmt->setFetchMode(PDO::FETCH_CLASS, "contact")

    Il est à noter que le constructeur de la classe (s'il y en a un) est appelé après. Vous pouvez inverser l'ordre d'appel avec :

    $stmt->setFetchMode(PDO::FETCH_CLASS | PDO::FETCH_PROPS_LATE , "contact")
  5. Ecrire une page qui affiche, en utilisant tout ce qui précéde, la liste des tous les contacts


  6. Dans l'affichage précédent, on veut que chaque contact soit un lien que l'on puisse ouvrir dans une nouvelle page.

    Ajouter dans la classe contact une méthode afficherLienHtml qui permet de formater le lien :

    <a target="_blank" href="./editer.php?id=3">Denis Monnerat</a>

retour à la page d'accueil

retour au sommet