miércoles, 25 de abril de 2012

include masiva con php

include masivo con php

Hacer include de clases o documentos o lo que fuera necesario en php a veces se puede volver un trabajo bastante complicado o no tan complicado pero cuando se tienen muchos archivos para incluir es bastante engorroso tener que "uno a uno" ir haciendo include tras include hasta haber incluido en el lugar necesario todos los documentos necesarios

este script lo creé en base a varios tutoriales y otras yerbas que encontré en el dios google, es un prototipo simplificado del que utilizo en uno de mis proyectos web así que es 100% funcional, espero no enredarme a la hora de explicar su funcionamiento

vamos al grano, este es el script:

include_masivo.php:
<?php
################################################################################
# * INCLUDE MASIVO:                                                            #
# * esto sirve para cargar archivos sin necesidad de hacer miles de includes   #
# * en un mismo documento                                                      #
# * Por favor conserva mis datos:                                              #
# * Nombre: Mauricio José Tobares - abril 2012 - Argentina                     #
# * Sitio web: http://www.octavoinfierno.com.ar                                #
# * Blog: http://notas-php.blogspot.com.ar                                     #
# * Mail: carrozadelamuerte@gmail.com - carrozadelamuerte@octavoinfierno.com.ar#
# * Este script es solo una reducción de ejemplo de un script aun mas complejo #
# * por lo que si lo utilizas o lo adaptas a tus proyectos me gustaría que me  #
# * lo comentaras en el blog y/o mandándome un correo electrónico              #
################################################################################
// ruta a la carpeta, '.' es la carpeta actual asique se colocará la ruta ./directorio/
// o la carpeta que ustedes utilicen
$path = "directorio/";
// el siguiente array lo que hace es guardar los valores de lo que NO queremos que se muestre
// en nuestro caso "." y ".." ya que iremos imprimiendo uno a uno los documentos que encuentre
$no_mostrar = Array(".","..");
// nótese que también se podría colocar exclusiones de documentos en particular por ejemplo:
// $no_mostrar = Array(".","..","algo-1.php","algo-2.php","algo-3.php",);
// el resultado de hacer eso en nuestro caso será que no se cargarán los
// documentos algo-1.php, algo-2.php y algo-3.php
//
// ahora abrimos la carpeta
$dir_handle = opendir($path) or die("No se pudo abrir $path");
// generamos el bucle que irá cargando archivo por archivo
while ($file = readdir($dir_handle)) {
// esto en el original decía ".php" pero como nosotros
// no vamos a hacer una lista de los archivos encontrados sino un include debemos
// dejarlo así... que lea el archivo.php como viene sin quitarle la extensión
  $pos = strrpos($file,".");
  $extension = substr($file,$pos);
// no_mostrar lo que hace justamente es NO mostrar lo que definimos en el array
  if (!in_array($extension, $no_mostrar)) {
    include_once($path.$file);
// * para comprobar si se carga todo correctamente podemos hacer un echo de esta forma:
//  echo $path.$file;
  }
}
// finalmente cerramos la carpeta
closedir($dir_handle);
################################################################################
?>

Ahora debes crear una carpeta llamada "directorio" y colocar dentro un par de archivos, como ejemplo yo coloqué 5 archivos llamados algo-1.php, algo-2.php y así

algo1.php lo único que tiene es un titulo H1, algo-2.php un titulo H2 y así hasta el H5

bueno, eso es todo, espero les sea de utilidad este script para hacer include masivo

Otras ideas a tener en cuenta:
Con el include masivo no solo se pueden poner archivos de html liso y llano, pueden colocar scripts de php o lo que se les ocurra que se haya que incluir, también se puede hacer un require masivo y utilizarlo por ejemplo para requerir todos los scripts de una carpeta determinada, una gran posibilidad es asignar la ruta mediante una consulta en base de datos para que en determinada sección de la página se requiera la carga de determinados archivos, también se puede asignar dentro del array que se carga en $no_mostrar un array asociativo en donde se le meta otro array que cargue las excepciones desde una db etc etc...

todo queda a libre criterio de lo que se necesite, pero lo básico está echo, ahora solo hay que ver como adaptarlo a cada proyecto ya que no todos los proyectos tienen por que ser exactamente iguales

No hay comentarios:

Publicar un comentario

Gracias por tu lectura