89 lines
2.2 KiB
PHP
89 lines
2.2 KiB
PHP
|
<?php
|
|||
|
|
|||
|
/**
|
|||
|
* Class Csvdb
|
|||
|
*
|
|||
|
* Singleton
|
|||
|
* Stock en son objet l'intégralité du fichier CSV (performance)
|
|||
|
*/
|
|||
|
class Csvdb {
|
|||
|
|
|||
|
private $_db = array();
|
|||
|
private static $_instance;
|
|||
|
private $_filename = 'db.csv';
|
|||
|
|
|||
|
/**
|
|||
|
* Csvdb constructor.
|
|||
|
*
|
|||
|
* Le contructeur se charge de contruire la base de donnée interne au singleton ($_bd)
|
|||
|
*/
|
|||
|
protected function __construct()
|
|||
|
{
|
|||
|
if (file_exists($this->_filename)) {
|
|||
|
$i = 0;
|
|||
|
$headers = array();
|
|||
|
$filedata = file($this->_filename);
|
|||
|
|
|||
|
for ($i = 0; $i < count($filedata); $i++) {
|
|||
|
// Première ligne, index 0 = headers
|
|||
|
if (!$i) {
|
|||
|
foreach (str_getcsv($filedata[$i], ';') as $headerdata) {
|
|||
|
$headers[] = trim($headerdata);
|
|||
|
}
|
|||
|
} else {
|
|||
|
$linedata = str_getcsv($filedata[$i], ';');
|
|||
|
$nline = $i - 1;
|
|||
|
$this->_db[$nline] = array();
|
|||
|
|
|||
|
for ($j = 0; $j < count($linedata); $j++) {
|
|||
|
$this->_db[$nline][$headers[$j]] = trim($linedata[$j]);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if (empty($this->_db)) {
|
|||
|
throw new Exception('Aucun adhérent n’est présent', 200);
|
|||
|
}
|
|||
|
} else {
|
|||
|
throw new Exception('Le fichier d’entrée est introuvable', 404);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @return Csvdb
|
|||
|
*
|
|||
|
* Retourne l'instance du Singleton
|
|||
|
*/
|
|||
|
public static function getInstance() {
|
|||
|
if (is_null(self::$_instance)) {
|
|||
|
self::$_instance = new Csvdb();
|
|||
|
}
|
|||
|
return self::$_instance;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @param $id
|
|||
|
* @return array|null
|
|||
|
*
|
|||
|
* Retourne un adhérent en fonction de son identifiant
|
|||
|
*/
|
|||
|
public function get($id) {
|
|||
|
foreach ($this->_db as $item) {
|
|||
|
if ($item['identifiant'] == $id) {
|
|||
|
return $item;
|
|||
|
}
|
|||
|
}
|
|||
|
return null;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @return array
|
|||
|
*
|
|||
|
* Retourne toute la base de données
|
|||
|
*/
|
|||
|
public function getAll() {
|
|||
|
return $this->_db;
|
|||
|
}
|
|||
|
|
|||
|
}
|