organisation (élégante) du code
Bonjour,
Une question d'organisation du code :
Soit un fichier CSV à importer.
Ce fichier étant utilisé par des humains, il faut faire un max de vérif avant de l'importer.
L'import se subdivise en plusieurs fonctions :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| // fonction principale.
/**
* $sourceFile : nom du fichier source
* $destTable : nom de la table dans laquelle seront importées les données
* $fields décrit la structure attendue
*/
function importCsv($sourceFile, $destTable, $fields) {
list($header, $lines) = getCsvFile($sourceFile, $fields); // fait l'import brutal du fichier, et récupère d'un coté le header (où se trouvent les champs), et de l'autre les données elles-mêmes
checkHeader($header, $fields); // vérifie les données du header
checkLines($lines, $fields); // vérifie les données des lignes
...
} |
Maintenant, je veux afficher un joli msg d'erreur avec notamment le nom du fichier incriminé, je suis obligé de passer $sourceFile dans les différentes sous-fonctions (checkHeader et checkLines).
J'envisage plusieurs solutions :
- passer le nom du fichier fautif $sourceFile en paramètre. Or, ce paramètre n'est pas réellement nécessaire aux fonctions. Pas beau.
- intégrer le tout dans un objet, et mettre $sourceFile en variable membre. On appelle la "fonction" par le constructeur (ou la méthode statique).
On se balade donc avec un $this->sourceFile (ou un self::$sourceFile), mais surtout on utilise un objet à contre-emploi (à mon sens)
La meilleure solution (les fonctions incluses l'une à l'intérieur de l'autre, qu'on retrouve notamment en Pascal) n'existe pas en PHP
Détail : j'ai volontairement pris un cas simple. Il existe certains cas ou je me retrouve avec 3 ou 4 "paramètres" en plus, ce qui alourdi considérablement toutes les écritures.
Auriez-vous une autre approche plus élégant me suggérer ?
Comment faites-vous dans ce genre de cas ?
Yvan