Note :
Le module fieldfileaccess propose des fonctions de manipulation de tableaux enregistrés.
Il offre les fonctions suivantes:
- ffa_add : ajouter une entrée
- ffa_readkey : lire une entrée
- ffa_getkey : lire une entrée
- ffa_delkey : effacer une entrée
- ffa_writefile : écrire un tableau
- ffa_readfile : lire un tableau
- ffa_replace : remplacer/fusionner un tableau
- ffa_filearray_replace : remplacer/fusionner un tableau
Concept :
Ces fonctions permettent d'utiliser des tableaux sauvegardés dans des fichiers.
ffa_add
Cette fonction permet d'ajouter une entrée au tableau. Cette entrée est accessible avec la clef indiquée.
Les trois premiers paramètres sont :
- filename : le nom du fichier
- key : la clef à ajouter
- mode : le mode 0, 1 ou 2 (voir ci-dessous)
Le mode indique comment doivent être interprétés les paramètres qui suivent:
- 0 : la valeur stockée est scalaire (une chaîne ou un nombre)
- 1 : la valeur stockée est un tableau. Seules les valeurs sont passées en paramètre.
- 2 : la valeur stockée est un tableau. Les clefs et les valeurs sont passées alternativement en paramètre.
Code d'erreur renvoyé par la fonction :
- -2 : la clef est déjà utilisé
- -100 : le fichier est vérouillé (explication)
Exemple d'utilisation de ~ffa_add :
~ffa_add("monfichier","clef0",0,"valeur scalaire") ~ffa_add("monfichier","clef1",1,"val1","val2","val3") ~ffa_add("monfichier","clef2",2,"K1","valeur1","K2","valeur2","K3","valeur3")
ffa_readkey
Cette fonction permet de lire dans une zone temporaire la valeur associée à la clef indiquée.
Elle prend deux paramètres:
- filename : le nom du fichier
- key : la clef à lire
Code d'erreur renvoyé par la fonction :
- -1 : ne peut pas lire le fichier
- -100 : le fichier est vérouillé (explication)
ffa_getkey
Cette fonction sert à récupérer de la zone temporaire une valeur. Elle prend un paramètre optionnel qui est la clef.
Exemple d'utilisation de ~ffa_getkey et ~ffa_readkey (l'exemple utilise le fichier créé dans l'exemple précédent) :
~ffa_readkey("monfichier","clef0") ~ffa_getkey() => valeur scalaire ~ffa_readkey("monfichier","clef1") ~ffa_getkey("1") => val2 ~ffa_readkey("monfichier","clef2") ~ffa_getkey("K3") => valeur3
ffa_delkey
Cette fonction permet d'effacer un enregistrement. Elle prend deux paramètres:
- filename : le nom du fichier
- key : la clef à effacer
Code d'erreur renvoyé par la fonction :
- -1 : ne peut pas lire le fichier
- -2 : la clef n'existe pas
- -100 : le fichier est vérouillé (explication)
Exemple d'utilisation de ~ffa_delkey :
~ffa_delkey("monfichier","clef0")
ffa_writefile
Cette fonction permet d'enregistrer un tableau dans un fichier.
Elle prend 2 paramètres :
- filename : le nom du fichier
- array : le tableau à enregistrer
Code d'erreur renvoyé par la fonction :
- -1 : si le fichier ne peut pas être ouvert en écriture
- -100 : le fichier est vérouillé (explication)
ffa_readfile
Cette fonction renvoie toutes les valeurs du fichier sous la forme d'un tableau.
Elle prend 1 paramètre :
- filename : le nom du fichier
Code d'erreur renvoyé par la fonction :
- -1 : si le fichier ne peut pas être ouvert en lecture
- -100 : le fichier est vérouillé (explication)
Exemple d'utilisation de ~ffa_writefile et ~ffa_readfile :
~set('tab[un]', 'premier') ~set('tab[deux]', 'deuxième') ~set('tab[trois]', 'troisième') ~ffa_writefile("monfichier", ~get("tab")) ~array_list(~ffa_readfile("monfichier"), 0, , 'LM', '~array_fld('key') = ~array_fld('current'), ') => un = premier, deux = deuxième, trois = troisème
ffa_replace
Cette fonction permet de modifier et d'ajouter des entrées.
Les valeurs du tableau en paramètre sont fusionnées avec celles présentes dans le fichier.
Si le fichier n'existe pas, celui-ci sera créé et la fonction aura le même effet que la fonction ~ffa_writefile.
Elle prend 2 paramètres :
- filename : le nom du fichier
- array : tableau à fusionner
En cas de succès le nouveau tableau est renvoyé
Code d'erreur renvoyé par la fonction :
- -1 : le fichier ne peut pas être ouvert en écriture
- -100 : le fichier est vérouillé (explication)
Exemple d'utilisation de ~ffa_replace :
~set('tab[un]', 'premier') ~set('tab[deux]', 'deuxième') ~set('tab[trois]', 'troisième') ~ffa_writefile("monfichier", ~get("tab")) ~array_list(~ffa_readfile("monfichier"), 0, , 'LM', '~array_fld('key') = ~array_fld('current'), ') => un = premier, deux = deuxième, trois = troisième ~set('tab2[un]', '1') ~set('tab2[quatre]', '4') ~ffa_replace("monfichier", ~get("tab2")) ~array_list(~ffa_readfile("monfichier"), 0, , 'LM', '~array_fld('key') = ~array_fld('current'), ') => un = 1, deux = deuxième, trois = troisième, quatre = 4
ffa_filearray_replace
Cette fonction est presque identique à ffa_replace excepté qu'elle retourne une chaîne vide en cas de succès au lieu de retourner le nouveau tableau.
Vérouillage de fichier
NOTE : les explications ci-dessous sont uniquement données afin comprendre le fonctionnement interne du module.
Les fonctions du module fieldfileaccess utilisent un système de vérouillage de fichier (en anglais "file locked").
Lorsqu'un script travaille sur un fichier, le vérouillage empêche l'utilisation de ce même fichier par un autre script.
Les fonctions du module créent un fichier de même nom avec l'une des extensions suivantes : ".free" ou ".lock". Ces extensions permettent d'identifier si un fichier est vérouillé (.lock) ou non (.free).
Les fonctions du module enregistrent les valeurs dans un fichier avec pour extension ".php".