sábado, 16 de agosto de 2014

Los includes en PHP



La función include() es muy útil porque permite llamar a otra página PHP en una página PHP. Si marca include(’funciones.php’), equivale a pegar el código contenido en la página funciones.php en el lugar donde llama a la función include(). Por tanto, esta función recibe como parámetro el nombre de la página PHP que va a incluir.

Por ejemplo, supongamos que tiene una página PHP llamada variable.php que contiene el siguiente código:

<?php
$apellido = "López";
$nombre = "Roberto";
?>

En su página actual PHP, se llama a include de la siguiente manera:

<?php
include("variable.php");
echo $nombre." ".$apellido;
?>

Da como resultado:

Roberto López

Si su archivo variable.php se encuentra en el directorio inc, el código para llamar a esta página es:

<?php
include("inc/variable.php");
echo $nombre." ".$apellido;
?>

La página PHP se puede especificar con una ruta relativa o absoluta. Una ruta absoluta se marca desde la raíz del disco (por ejemplo, C:\Program Files\easy PHP), mientras que una ruta relativa se marca desde el lugar donde se encuentra su archivo PHP. En el próximo capítulo verá que el archivo php.ini incluye una directiva include_path que contiene la ruta de búsqueda de los archivos de inclusión.

El archivo que va a incluir puede tener la extensión inc y así recurrir a la variable.inc en lugar de la variable.php. También puede contener solo HTML. Si tiene que insertar un menú en todas las páginas de su sitio Web, cree un archivo menu.php que contenga su menú en HTML. Haga un include ("menu.php") en todas las páginas de su sitio Web. Esto es muy importante para mantener el sitio; si realiza una modificación en el menú, bastará con que la defina una sola vez para que dicha modificación se visualice en todas partes.

  • La función include_once() evita que se repita varias veces la inclusión. Puede ocurrir que su archivo include se llame involuntariamente en otro archivo include. Su sintaxis es la misma que la de la función include().
  • La función require() es similar a la función include(), con una diferencia. La función require() puede causar un grave error si no consigue ejecutar el código del archivo que pasa como parámetro, mientras que la función include() solo causa un aviso (warning). Su sintaxis es la misma que en include, es decir: require("página_includephp").
  • La función require_once() evita que se repita varias veces la inclusión de tipo require.



Ejercicios

1. Enunciados

Ejercicio 1 (fácil): creación de un archivo contador de páginas

Cree un archivo de texto que almacene el número de veces que se visita una página.

Ejercicio 2 (medio): creación de un archivo de información de imágenes

Mueva tres imágenes a un directorio de imágenes y cree una página PHP que cree un archivo de texto que contenga el nombre y el tamaño de estas imágenes. A continuación, copie estas imágenes en un directorio de archivo que esté al mismo nivel que el directorio de imágenes.

Ejercicio 3 (difícil): creación de registro de seguimiento

Cree una página que escriba en un archivo log.txt la fecha y la hora actual y que muestre en microsegundos el tiempo que se tarda en mover tres imágenes del directorio de imágenes al directorio de archivo.


2. Soluciones

Solución del ejercicio 1

Cree un archivo contador.txt y ejecute el siguiente código:

<?php
$recurso = fopen(’contador.txt’, ’r+’);
$nb_vistas = fgets($recurso); // Lectura de la primera línea que
// contiene el número de páginas visitadas
if ($nb_vistas == "") { //comprueba si el archivo no contiene aún
//número
$nb_vistas = 0;
}
$nb_vistas++; // Aumento en 1 del número de páginas vistas
fseek($recurso, 0); // el cursor se pone al principio del archivo
fputs($recurso, $nb_vistas); // escritura del nuevo número
de páginas visitadas
fclose($recurso); // Cierre del archivo
echo ’Se ha visitado esta página ’.$nb_vistas.’ veces.’;
?>

Solución del ejercicio 2

<?php
$recurso = fopen(’archivo_imagen.txt’, ’w+’); //creación del archivo
//de texto si no existe.
if ($recurso) {
fputs($recurso, ’nombre ’);
fputs($recurso, ’tamaño.’.PHP_EOL);
if ($cursor = opendir(’./imagenes’)) { //apertura del directorio
//(C:\Program Files\EasyPHP-DevServer-13.1VC11\data\localweb\imagen)
while ($archivo = readdir($cursor)) { //mientras exista un
//archivo en el directorio
if ($archivo != "." && $archivo != "..") {
fputs($recurso,$archivo.’ ’); //inserción del
//nombre del archivo
fputs($recurso,filesize(’./imagenes/’.$archivo).’
bytes’.PHP_EOL); //inserción del tamaño del archivo
}
}
closedir($cursor);
}
}
fclose($recurso);
if (! is_dir("./archivo")) { //comprueba si el directorio
//ya no existe
mkdir(’archivo’); //creación del directorio archivo
}
if ($cursor = opendir(’./imagenes’)) { //apertura del directorio
//imagen
//(C:\Program Files\EasyPHP-DevServer-13.1VC11\data\localweb\imagen)
while ($archivo = readdir($cursor)) { //mientras exista
//un archivo en el directorio
if ($archivo != "." && $archivo != "..") {
copy("./imagenes/".$archivo,"./archivo/".$archivo);
//copia la imagen en la carpeta archivo
}
}
closedir($cursor);
}
?>

Solución del ejercicio 3

<?php
$recurso = fopen(’log.txt’, ’w+’); //creación del archivo de texto si
//no existe.
if ($recurso) {
fputs($recurso, fecha y hora actual:’);
fputs($recurso, date(’d.m.Y G:i:s’).PHP_EOL); //escritura de la fecha
//y de la hora actual
}
fclose($recurso);
if (! is_dir("./archivo")) { //prueba si el directorio
//no existe todavía
mkdir(’archivo’); //creación del directorio archivo
}
$inicio_tiempos = (float)microtime();
if ($cursor = opendir(’./imagenes’)) { //apertura del directorio imagen
//(C:\Program Files\EasyPHP-DevServer-13.1VC11\data\localweb\imagen)
while ($archivo = readdir($cursor)) { //mientras exista
//un archivo en el directorio
if ($archivo != "." && $archivo != "..") {
copy("./imagenes/".$archivo,"./archivo/".$archivo);
//copia la imagen en la carpeta archivo
unlink("./imagenes/".$archivo); //eliminar la imagen en el
//directorio imágenes
}
}
closedir($cursor);
}
$fin_tiempos = (float)microtime();
$duracion_tiempos = $fin_tiempos - $inicio_tiempos; //cálculo de la duración
//del desplazamiento de imágenes en microsegundos
echo "La duración para desplazar estas imágenes es de:
".$duracion_tiempos." microsegundos.";
?>



Espero haber ayudado en algo. Hasta la próxima oportunidad!








No hay comentarios:

Publicar un comentario en la entrada