Modèle objet de PHP (2)
Notes de cours
Travail personnel
Objectifs
Nous poursuivons notre exploration de PHP en nous focalisant sur les concepts orientés objet.
- Apprendre à lire un fichier CSV en PHP.
- Extraire les informations pertinentes du fichier CSV.
- Effectuer des statistiques à partir des données.
Exercice 1 — Lecture d'un fichier CSV et statistiques sur les naissances #
Dans cet exercice, nous allons manipuler un fichier CSV contenant des données sur les prénoms donnés à Paris. Le fichier est accessible sur le portail de Paris.
1. Création d'une classe CSVReader pour la manipulation du fichier csv :
- Téléchargez le fichier des données de naissance à Paris. Décompressez l'archive et placez le fichier CSV dans votre répertoire courant.
Le fichier CSV contient les colonnes "Sexe", "Annee", "Prenoms" et "Nombre prénoms déclarés" à Paris. Les données sont séparées par virgules. Ainsi, par exemple, la ligne :
M,2011,Yacine,46
signifie qu'en 2011, 46 bébés assignés garçons ont été prénommés Yacine.
F,2012,Abigail,7
signifie qu'en 2012, 7 bébés assignés filles ont été prénommés Abigail.
- Dans un script PHP, créez une classe nommée
CSVReader
avec :
- Une propriété privée
$donnees
de type tableau et une propriété privée$url
de type chaîne de caractères. - Une méthode privée
lireCSV
qui ouvre le fichier CSV en utilisant l'URL fournie, lit son contenu ligne par ligne, et stocke chaque ligne dans le tableau $donnees. - Une méthode publique getDonnees qui renvoie le tableau de données.
<?php class CSVReader { // Déclaration des propriétés de la classe /* à définir ..... */ public function __construct(string $url) { /* à compléter ..... */ } private function lireCSV() { $fichier = fopen($this->url, 'r'); if ($fichier === false) { throw new Exception("Impossible d'ouvrir le fichier CSV."); } // Ignorer la première ligne (entêtes) fgets($fichier); while (($line = fgets($fichier)) !== false) { // enlever le caractère de fin de ligne $line = trim($line); /* à compléter ... */ // $infos est un tableau avec sexe, prénom, année, département, nombre // diviser la chaîne de caractères $line en un tableau, en utilisant // la virgule (,) comme délimiteur et remplir le tableau $this->donnees /* à compléter ... */ } // fermer le fichier fclose($fichier); } // Créez les getters : getDonnees(), ... /* à compléter ... */ } ?>
- Une propriété privée
Nombre total de personnes : 619873 (324276 M + 295597 F) Proportion de garçons : 52.313296433302% des naisssances. Proportion de filles : 47.686703566698% des naisssances.
Nombre de garçons nés en 2023 : 14184 Nombre de filles nées en 2023 : 12727
2. Création d'une classe Personne :
- Créez une classe Personne en PHP 8 qui représente une personne avec les caractéristiques suivantes : sexe, année de naissance et prénom. Assurez-vous d'utiliser des types déclarés pour garantir le bon type des données. La classe doit également avoir une méthode __toString() qui génère une représentation textuelle de la personne, indiquant si c'est un garçon ou une fille et précisant le prénom et l'année de naissance.
- Compléter la classe
CSVReader
avec :
- Une propriété
private array $personnes
qui contiendra toutes les instances des personnes.
- Une propriété
- Ajouter au tableau
$personnes
dans la méthodelireCSV()
toutes personnes (objet Personne.
array_filter
.