AccesoDatosCSV.php
1.67 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<?php
namespace clases\accesoDatos;
/**
* Obtiene datos de un archivo CSV.
*/
class AccesoDatosCSV implements iAccesoDatos {
private $fh, $separadorCampos, $separadorTexto, $caracterEscape;
/**
*
* @param string $archivo
* @param int $posicionActual
* @param int $numLineasCabecera
* @param string $separadorCampos
* @param string $separadorTexto
* @param string $caracterEscape
*/
function __construct($archivo, $posicionActual, $numLineasCabecera = 1, $separadorCampos = ',', $separadorTexto = '"', $caracterEscape = '\\') {
if(is_file($archivo)) {
$this->fh = fopen($archivo, 'r');
}
$this->separadorCampos = $separadorCampos;
$this->separadorTexto = $separadorTexto;
$this->caracterEscape = $caracterEscape;
$this->saltarLineas($posicionActual, $numLineasCabecera);
}
public function obtenerFila() {
return fgetcsv($this->fh, 0, $this->separadorCampos, $this->separadorTexto, $this->caracterEscape);
}
/**
* Avanza el puntero en el archivo CSV.
* @param int $posicionActual La linea a procesar.
* @param int $numLineasCabecera
*/
private function saltarLineas($posicionActual, $numLineasCabecera) {
if (!$posicionActual) {
$posicionActual = $numLineasCabecera;
}
for ($i = 0; $i < $posicionActual; $i++) {
fgetcsv($this->fh, 0, $this->separadorCampos, $this->separadorTexto, $this->caracterEscape);
}
}
/**
* Cierra el fichero.
*/
public function cerrarArchivo() {
if($this->fh) {
fclose($this->fh);
}
}
}