CSV es uno de los formatos mas extendidos para la conciliación de listados cuando hacemos integraciones. Son rápidos de implementar, sencillos de trabajar y MUUUY poco verbosos (prácticamente todo el documento son datos). El mayor problema que suelen tener es que son muy sensibles al cambio. Bien, aquí un pequeño truquito que os salvara luego horas de search/replace.

Antipattern: Recibimos un csv (o lo generamos) y, tras el parseo, trabajamos cada uno de los valores de sus lineas por posición.

Solución: Simple, mapear cada linea contra una cabecera. De este modo, trabajaremos con hashes (en este caso arrays asociativos). Para ello sólo necesitamos un array que nos servirá de header.

El código:

$handler = fopen($fullPathToFile, 'r');
$header = array(
    'AvgCrown', 
    'MinCrown', 
    'MaxCrown', 
    'dateLogged', 
    'DailightHours'
);
while ($line = fgetcsv($handler)) {
    $line = array_combine($header, $line);
    //process data ...
    processData(
        $line['AvgCrown'], 
        $line['MinCrown'], 
        $line['MaxCrown']
    );
}

De este modo, cuando la especificación cambie, será muy sencillo modificar la cabecera y no deberíamos necesitar tocar el resto del código si sólo son cambos de posiciones y/o inserciones de nuevos campos en el csv.

 

Leave a reply

 

Your email address will not be published.