Entrada
y Salida
| Las operaciones
de entrada/salida en PHP tienen una gran importancia en cualquier lenguaje
de programación ya que no tiene sentido que un lenguaje de programación
no pueda escribir, leer, actualizar datos de una base de datos, etc. En
este capítulo nos centraremos básicamente en las operaciones
de entrada y salida con archivos y posteriormente explicaremos las operaciones
con bases de datos. |
|
Supongamos que deseamos hacer una tienda
de compra online. Imaginemos el gran esfuerzo que supondría tener
que modificar todas las paginas HTML de aquellos productos en los cuales
en la temporada de oferta su precio se viera afectado. La solución
más primitiva para el almacenamiento de datos es un fichero de texto,
el contenido del fichero de texto puede ser cualquiera.
¿Cómo abrimos un
fichero?
Para abrir un fichero PHP pone a
disposición una función. Su sintaxis es la siguiente:
fopen(fichero,modo);
la ruta del fichero se indica en fichero, y modo determina los diferentes
modos de lectura de un archivo:
|
Atributo
|
Efecto
|
|
r
|
Solo lectura |
|
r+
|
Lectura y escritura |
|
w
|
Sólo escritura. Borra
el contenido anterior |
|
w+
|
Lectura y escritura. Borra el
contenido anterior. |
|
a
|
Solo escritura. Conserva el contenido
anterior. |
|
a+
|
Lectura y escritura. Conserva
el contenido anterior |
La función fopen devuelve
un manejador de fichero que es el que utilizaremos en las funciones relacionadas
con la lectura y escritura de ficheros.
¿Cómo se recorre un
fichero?
Para leer un fichero lógicamente
la operación es muy sencilla. Consiste en ir leyendo todos los caracteres
hasta llegar al EOF (end of file... final del archivo) el cual determina
el final del texto.
| SAl igual
que en las matrices los ficheros poseen un cursor interno que indica su
posición actual con respecto a todo el texto.
Para comprobar si se ha llegado al
final del archivo, PHP pone a nuestra disposición la función
feof(manejador_fichero); que se encarga de comprobar si la posición
actual del fichero es la marca del final.
La función mas genérica
de lectura es fread(manejador_fichero,nº_bytes); |
|
que se encarga de leer un numero determinado
de bytes del fichero y devolvérnoslo en una cadena de caracteres.
En cambio, si lo que pretendemos
es leer el fichero caracter a caracter debemos usar la función fgetc(manejador_fichero);
.
Otras de las funciones mas características
son: fgets(fichero,nº bytes); que nos devuelve una cadena de caracteres
con la información leída. fgetss(manejador_fichero,nº
bytes,[mostrar_tags]); nos lee un fichero HTML omitiendo las etiquetas
características del código, en mostrar tags debemos introducir
las etiquetas que deseamos que se muestren.
Si al realizar
la lectura lo que se pretenden leer los valores que siguen un determinado
formato de entrada nos podemos ahorrar un gran trabajo usando la función
fscanf
(manejador_fichero,
formato,variables);
Esta función obtiene los datos de entrada de un fichero siguiendo
un formato determinado. Posteriormente dicha información debe ser
tratada
por el programador. La ultima función
que vamos a estudiar para abrir ficheros es la función |
|
file(nombre_fichero); con esta función
no es necesario usar las funciones fopen() y fclose() ya que se ejecutan
de forma implícita.
¿Cómo se cierra
un fichero?
Cerrar es la ultima operación
que se debe realizar al manipular un fichero y permite cerrar la referencia
que se hace al fichero en el script ejecutado. Para poder cerrar un fichero
usamos la función fclose(manejador_fichero);
Escritura en ficheros
Para escribir en un fichero básicamente
debemos realizar tres operaciones: abrir el fichero en modo escritura,
realizar la operación de escritura realizada, cerrar el fichero.
Las funciones que empleamos para escribir en un fichero son fputs(manejador_fichero,cadena);
y fwrite(manejador_fichero,cadena); que nos permiten añadir una
cadena de caracteres al texto anterior contenido en el texto.
Acceso directo en ficheros
Existen un conjunto de funciones
que nos permiten situarnos en una determinada posición del fichero
para leer a partir de ahí.
La función fseek(manejador_fichero,posicion);
Nos permite empezar a leer un fichero a partir de una posición según
se determine: seek_set (se toma con el principio del fichero), seek_cur
(posición actual), seek_end (posición final).
Existen dos funciones básicas
que nos posicionan al principio del fichero -> rewind(manejador_fichero);
o que nos devuelven el valor actual de la posición->
ftell(manejador_fichero);
Funciones variadas para el manejo
de ficheros
fpassthru(manejador_fichero);
Nos muestra el contenido referenciado por manejador de fichero. Devuelve
el numero de bytes mostrados si no se produce ningún fallo.
set_file_buffer(fichero,tamaño);
Determina el tamaño del buffer de ese archivo que usara PHP.
readfile(fichero);
Lee un fichero y lo muestra por el método de salida estándar.
|