L'objet "INFOS"
Voici les propriétés et méthodes spécifiques à l'objet
Infos
:
Propriétés
La classe
Infos
hérite des propriétés et des méthodes publiques de la classe
Listing
, il est donc
inutile de les rapeller ici.
$data
ARRAY — Tableau contenant les informations de l'entrée trouvée.
$loaded
BOOLEAN — TRUE si la BDD a déjà été lue (pour vérifier avant 'update' ou 'insert' -> cf. méthode save()
).
Méthodes
__construct()
RÉCUPÉRATION du contenu d'une entrée de table SQL : Initialisation
__construct(
STRING $table, OBJECT $pdoInstance = false
)
Paramètres
STRING |
$table |
Le nom de la table SQL |
OBJECT |
$pdoInstance |
Une instance de PDO préinitialisée (optionnel) |
setTable()
Définition de la table où rechercher / ajouter une entrée.
setTable(
STRING $table
)
Paramètres
STRING |
$table |
Le nom de la table SQL |
getTable()
Retourne le nom de la table courante.
getTable() : STRING
Retourne
STRING — Le nom de la table courante.
loadInfos()
Charge une entrée selon un filtrage basique. Renvoie une erreur si plusieurs entrées ont été trouvées.
loadInfos(
STRING $filtreKey, STRING $filtreVal,
BOOLEAN $withFK = true, BOOLEAN $decodeJson = true, BOOLEAN $parseDatesJS = true
)
Paramètres
STRING |
$filtreKey |
Le nom de la colonne pour le filtre |
STRING |
$filtreVal |
La valeur du champ pour le filtre |
BOOLEAN |
$withFK |
TRUE pour récupérer les données JOINTES (default TRUE) |
BOOLEAN |
$decodeJson |
TRUE pour décoder les champs contenant du JSON automatiquement. FALSE pour avoir les champs JSON au format STRING (default TRUE) |
BOOLEAN |
$parseDatesJS |
TRUE pour formater les dates au format ISO 8601 pour javascript (default TRUE) |
isLoaded()
Vérifie si les infos ont déjà été chargées.
isLoaded() : BOOLEAN
Retourne
BOOLEAN — TRUE si les infos ont déjà été chargées depuis la BDD.
getInfo()
Récupération de la valeur d'une colonne spécifiée.
getInfo(
STRING $column = "*"
) : MIXED
Paramètres
STRING |
$column |
Le nom du champ dont on veut l'info |
Retourne
MIXED — La valeur de l'info demandée, FALSE si aucune info trouvée
getManyInfos()
Récupération de plusieurs infos spécifiées, ou de toutes les infos de l'entrée en mémoire.
getManyInfos(
ARRAY|STRING $columns = "*"
) : ARRAY
Paramètres
ARRAY|STRING |
$columns |
Le nom des colonnes dont on veut l'info, dans un tableau, ou une chaîne séparés par des virgules (default '*' -> toutes les infos) |
Retourne
ARRAY — Un tableau contenant les infos demandées, tableau vide si aucune info trouvée.
countInfos()
Compte le nombre d'infos en mémoire (colonnes).
countInfos() : INT
Retourne
INT — Le nombre d'infos (colonnes).
setInfo()
Ajoute / modifie une info dans la mémoire.
(
STRING $key, STRING $val
)
Paramètres
STRING |
$key |
Le nom de la colonne |
STRING |
$val |
La valeur du champ |
setManyInfos()
Modifie plusieurs infos d'une entrée dans la mémoire (permet de vérifier l'intégrité de l'entrée, en terme de colonnes).
setManyInfos(
ARRAY $newInfos,
BOOLEAN $allowAddCol = false, BOOLEAN $checkMissing = false, BOOLEAN $forceID = false
)
Paramètres
ARRAY |
$newInfos |
Un tableau avec les nouvelles valeurs pour les colonnes de l'entrée |
BOOLEAN |
$allowAddCol |
TRUE pour ignorer les colonnes en trop, FALSE pour permettre l'ajout de colonnes non existantes (default FALSE) |
BOOLEAN |
$checkMissing |
TRUE pour vérifier qu'il ne manque pas de colonne (renvoie une erreur), FALSE pour laisser MySQL remplir les valeurs manquantes (default FALSE) |
BOOLEAN |
$forceID |
TRUE pour obliger la redéfinition de la colonne "id", FALSE pour l'ignorer et laisser MySQL faire son auto-incrément (default FALSE) |
save()
MISE À JOUR (SAVE) d'une entrée dans la table courante.
save(
STRING $filterKey = 'id', STRING $filterVal = 'this',
BOOLEAN $autoAddCol = true, BOOLEAN $autoDate = true
) : STRING
Paramètres
STRING |
$filterKey |
Le nom de la colonne à utiliser pour identifier l'entrée (default 'id') |
STRING |
$filterVal |
L'identifiant à utiliser (default 'this' -> correspond à l'entrée actuelle) |
BOOLEAN |
$autoAddCol |
TRUE pour ajouter la(les) colonne(s) si elle(s) n'existe(nt) pas |
BOOLEAN |
$autoDate |
TRUE pour mettre à jour le champ de dernière modification avec la date courante, et la date de création dans le cas d'un INSERT, si la colonne est présente. (default TRUE) |
Retourne
STRING — Le type de requête SQL qui vient d'être utilisée pour le save ('UPDATE', ou 'INSERT')
delete()
Supprime une (ou plusieurs) entrée(s) de la base de données.
delete(
STRING $filterKey = 'id', STRING $filterVal = 'this', STRING $filtrePlus = null
) : INT
Paramètres
STRING |
$filterKey |
Le nom de la colonne à utiliser pour identifier l'entrée (default 'id') |
STRING |
$filterVal |
L'identifiant à utiliser (default 'this' -> correspond à l'entrée actuelle) |
STRING |
$filtrePlus |
Un flitre additionnel à ajouter à la requête SQL pour identifier l'entrée (optionnel) |
Retourne
INT — Le nombre de lignes supprimées.
colExists()
STATIC Vérifie si une colonne existe dans la table courante.
Infos::colExists(
STRING $table, STRING $colName
) : BOOLEAN
Paramètres
STRING |
$table |
Le nom de la table |
STRING |
$colName |
Le nom de la colonne |
Retourne
BOOLEAN — TRUE si la colonne existe, FALSE sinon.
colIndex_isUnique()
STATIC Vérifie si une colonne a un index UNIQUE (c'est à dire si elle peut avoir la même valeur pour plusieurs entrées).
Infos::colIndex_isUnique(
STRING $table, STRING $colName
) : BOOLEAN
Paramètres
STRING |
$table |
Le nom de la table |
STRING |
$colName |
Le nom de la colonne à vérifier |
Retourne
BOOLEAN — TRUE si la colonne a un index Unique, FALSE sinon.
addNewCol()
STATIC Ajoute une colonne dans une table de la base de données.
Infos::addNewCol(
STRING $table, STRING $colName, STRING $colType = 'VARCHAR(64)', STRING $defaultVal = ''
) : BOOLEAN
Paramètres
STRING |
$table |
Le nom de la table |
STRING |
$colName |
Le nom de la nouvelle colonne |
STRING |
$colType |
Le type de colonne à créer (default "VARCHAR(64)") |
STRING |
$defaultVal |
La valeur par défaut pour la colonne (optionnel, et inutile pour le type "TEXT") |
Retourne
BOOLEAN — TRUE si succès, FALSE si erreur.
removeCol()
STATIC Supprime une colonne d'une table de la base de données. Attention : incompatible avec SQLite pour le moment.
Infos::removeCol(
STRING $table, STRING $colName
) : BOOLEAN
Paramètres
STRING |
$table |
Le nom de la table |
STRING |
$colName |
Le nom de la colonne à supprimer |
Retourne
BOOLEAN — TRUE si succès, FALSE si erreur.
createMissingCols()
Vérifie si tous les champs existent, sinon création de la colonne à la volée.
createMissingCols()
autoAddCol()
Ajoute une colonne à la table courante, avec choix du type automatique.
autoAddCol(
STRING $colName, STRING $val
) : BOOLEAN
Paramètres
STRING |
$colName |
Le nom de la colonne |
STRING |
$val |
La valeur de la colonne (pour le check auto du type de colonne) |
Retourne
BOOLEAN — TRUE si succès, FALSE si échec.
Exceptions
Voici une liste des exceptions qui peuvent apparaître lors de l'utilisation de l'objet Infos, et leur signification.
Exceptions pour __construct()
Infos::__construct() : missing table name
Ceci signifie qu'il manque la table à utiliser pour rechercher l'entrée.
Choisissez une table dans la base de données, et passez son nom en paramètre $table
de new Infos()
.
Exceptions pour setTable()
Infos::setTable() : Table '$table' doesn't exists
Ceci signifie que la table spécifiée n'existe pas dans la base de données.
Choisissez une table dans la base de données, et passez son nom en paramètre $table
de setTable()
.
Exceptions pour loadInfos()
Infos::loadInfos() : Several entries ($number) found for '$filtreKey = $filtreVal'! Please refine your filter
Ceci signifie que plusieurs entrées ont été trouvées pour la recherche. L'objet Infos ayant été concu pour travailler sur
une entrée précise d'une table de la base, il renvoie une exception quand le résultat est multiple.
Choisissez un filtrage plus précis pour trouver l'entrée en changeant les paramètres $filtreKey
et $filtreVal
pour loadInfos()
.
Exceptions pour getInfo()
Infos::getInfo() : Missing column name
Ceci signifie qu'il manque le nom de la colonne à retourner pour l'entrée courante.
Choisissez une colonne dans la table de l'entrée courante, et passez son nom en paramètre $column
de getInfo()
.
Exceptions pour setManyInfos()
Infos::setManyInfos() : 'newInfos' must be an array ($type found)
Ceci signifie que le type de variable pour le paramètre $newInfos
n'est pas un tableau. Pour modifier l'entrée courante
avec la méthode setManyInfos()
, vous devez passer un tableau associatif contenant les valeurs à changer. Chaque clé du
tableau étant le nom de la colonne, et sa valeur la nouvelle valeur pour cette colonne.
Infos::setManyInfos() : missing $number columns in array 'newInfos', compared to current table ('$table'). List of missing columns: json_encode($missingRows)
Quand le paramètre $checkMissing
de setManyInfos()
est à True
, la méthode va effectuer une vérification
de la liste des clés du tableau $newInfos
pour voir s'il n'en manque pas.
Cette exception est donc envoyée quand il manque des colonnes dans le tableau, et donne une liste des colonnes manquantes.
Exceptions pour save()
Infos::save() : Duplicate entry for `$key`="$val" in table '$table'.
Ceci signifie qu'une des valeurs de l'entrée à sauvegarder existe déjà dans la base de données, à cause d'une colonne qui a un index unique.
Modifiez la nouvelle valeur d'entrée avant d'apeller save()
.
Infos::save() : table '$table' -> $msg.
Infos::save() : '.$error
Ces deux exceptions sont envoyées quand PDO rencontre une erreur. Le détail de l'erreur est spécifié dans le message.
Exceptions pour addNewCol()
Infos::addNewCol() : Missing table name
Ceci signifie qu'il manque le nom de la table dans laquelle ajouter la colonne.
Infos::addNewCol() : Missing column name
Ceci signifie qu'il manque le nom de la colonne à ajouter dans la table.
Infos::addNewCol() : This column already exists
Ceci signifie que la colonne est déjà présente dans la table. Choisissez un autre nom de colonne.
Exceptions pour removeCol()
Infos::removeCol() : SQLite3 limitation: you can't drop a column from a table with 'ALTER TABLE' statement.
Cette exception est renvoyée quand le driver PDO utilisé est 'sqlite'. À cause d'une limitation de la fonction ALTER
en SQLite, le DROP n'étant pas disponible, cette méthode est pour l'instant inutilisable. Vous devrez faire l'opération "à la main"
via une console SQLite.
D'autres exceptions peuvent apparaître, il s'agit sûrement d'exceptions envoyées par PDO lui-même.