Las operaciones de entrada/salida en PHP tienen una gran importancia
en cualquier lenguaje de programacion ya que no tiene sentido
que un lenguaje de programacion no pueda escribir,leer,actualizar
datos de una base de datos,etc. En este capitulo nos centraremos
basicamente 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 supondria tener que modificar todas las paginas
HTML de aquellos productos en los cuales en la temporada de oferta
su precio se viera afectado. La solucion mas primitiva para el
almacenamiento de datos es un fichero de texto, el contenido del
fichero de texto puede ser cualquiera.
¿Como abrimos un fichero?
Para abrir un fichero PHP pone a disposicion una funcion.Su sintaxis
es la siguiente:
fopen(fichero,modo); la ruta del fichero
se indica en fichero :P y modo determina los diferentes modos
de lectura de un archivo:
Atributo |
Efecto |
r |
Solo lectura |
r+ |
Lectura y escritura |
w |
Solo 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 |
¿Como se recorre un fichero?
Para leer un fichero logicamente la operacion 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).
Al igual que en las matrices los ficheros poseen un cursor interno
que indica su posicion actual con respecto a todo el texto. Para
comprobar si se ha llegado al final del archivo PHP pone a nuestra
disposicion de la funcion feof(fichero); que
se encarga de comprobar si la posicion actual del fichero es la
marca del final. La funcion mas generica de lectura es fread(fichero,nº_bytes);
que se encarga de leer un numero determinado de bytes
del fichero y delvolvernoslo en una cadena de caracteres, en cambio,
si lo que pretendemos es leer el fichero caracter a caracter debemos
usar la funcion fgetc(fichero); . Otras de las
funciones mas caracteristicas son: fgets(fichero,nº
bytes); que nos devuelve una cadena de caracteres con
la informacion leida. fgetss(fichero,nº bytes,[mostrar_tags]);
nos lee un fichero HTML omitiendo las etiquetas caracteristicas
del codigo, 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 funcion fscanf(fichero,formato,variables);
esta funcion obtiene los datos de entrada de un fichero
siguiendo un formato determinado, posteriormente dicha informacion
debe ser tratada por el programador.
La ultima funcion que vamos a estudiar para abrir ficheros es
la funcion file(nombre_fichero); con esta funcion
no es necesario usar las funciones fopen() y fclose() ya que se
ejecutan de forma implicita.
¿Como se cierra un fichero?
Cerrar es la ultima operacion 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
funcion fclose(fichero);
Escritura en ficheros
Para escribir en un fichero basicamente debemos realizar tres
operaciones: abrir el fichero en modo escritura, realizar la operacion
de escritura realizada, cerrar el fichero. Las funciones que empleamos
para escribir en un fichero son fputs(fichero,cadena);
y fwrite(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 posicion del fichero para leer a partir de ahi.
La funcion fseek(fichero,posicion); Nos permite
empezar a leer un fichero a partir de una posicion segun se determine:
seek_set(se toma con el principio del
fichero),seek_cur(posicion actual),seek_end(posicion
final).
Existen dos funciones basicas que nos posicionan al principio
del fichero -> rewind(fichero); o que nos
devuelven el valor actual de la posicion-> ftell(fichero);
Funciones variadas para el manejo de ficheros
fpassthru(fichero); Nos muestra el contenido
referenciado por manejador de fichero.Devuelve el numero de bytes
mostrados si no se produce ningun 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 metodo de salida estandar