Skip to content
Snippets Groups Projects
Select Git revision
  • 3166b2335396e2f6793e47d3d1569f1c83e2b6ee
  • main default protected
2 results

Livre.php

Blame
  • 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;
                    }
                }