Select Git revision
Objet.php 6.76 KiB
<?php
/**
* Implémente les magic methods.
*/
class Objet
{
public function __construct($data = null)
{
if (!is_null($data)) {
foreach ($data as $key => $value) {
$this->$key = $value;
}
}
}
/**
* Permet d'insérer un objet dans la base de données
* @param String $tableName
* @param array $columns
* @return void
* @throws ErrorException
*/
public static function addObject(string $tableName, array $columns): void
{
$validation = Objet::verifyTableAndFormat($tableName, $columns);
if (!$validation) {
throw new ErrorException("Erreur lors de la vérification de l'existance de la table $tableName et/ou lors de la vérification du format du nom des colonnes.");
}
// On prépare la requête
$queryString = ("INSERT INTO $tableName (" . implode(", ", array_keys($columns))
. ") VALUES (:" . implode(", :", array_keys($columns)) . ")");
$insertQuery = Database::pdo()->prepare($queryString);
try {
// Et on l'exécute
$insertQuery->execute($columns);
} catch (PDOException $e) {
throw new ErrorException($e->getMessage());
}
}
/**
* Permet de vérifier le format du nom de la table et des nom des colonnes + vérifier l'existance de la table.
* @param String $tableName
* @param array|null $columns
* @return false
* @throws ErrorException
*/
public static function verifyTableAndFormat(string $tableName, array $columns = null): bool
{
// On va vérifier que $tableName est bien en format alphanumérique
if (!isAlphaNumeric($tableName)) {
throw new ErrorException("La table n'existe pas.");
}
// Maintenant on va vérifier que la table existe
try {
Database::pdo()->query("SELECT 1 FROM $tableName LIMIT 1");
} catch (PDOException) {
return false;
}
if (!is_null($columns)) {
// On va vérifier que l'index de chaque est bien en format alphanumérique
foreach ($columns as $index => $value) {
if (!isAlphaNumeric($index)) {
return false;
}
}