Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/04/2013, 10:35
alyciashape
 
Fecha de Ingreso: abril-2012
Mensajes: 590
Antigüedad: 12 años, 9 meses
Puntos: 58
No se puede redeclarar función

Tengo un problema muy extraño que llevo ya horas y no logro resolver. Tengo esta funcion incluída en un fichero "procesa.php" que me genera un Excel a partir de un array, es tal que así:

Código PHP:
Ver original
  1. function generaExcel($resultado, $nombre, $destino) {
  2.  
  3.     $PHPExcel = new PHPExcel();
  4.     $PHPExcel->getProperties()->setTitle($nombre); //Título del Excel
  5.  
  6.     $campo_excel = 1;
  7.     $letra = 'A';
  8.     $tipo_string = array();
  9.  
  10.     #Imprimo los títulos
  11.     foreach($resultado as $filas) {            
  12.         #Código
  13.     }
  14.  
  15.     function tipo_string($columna, $tipo_string) {
  16.         #código
  17.     }
  18.  
  19.     #Imprimo los campos
  20.     foreach($resultado AS $filas) {
  21.         #código
  22.     }
  23.  
  24.     #Ajusto ancho de las columnas al texto
  25.     for ($col = 'A'; $col != $letra; $col++) {
  26.         $PHPExcel->getActiveSheet()->getColumnDimension($col)->setAutoSize(true);      
  27.     }
  28.  
  29.     $fecha = DATE('d-m-Y H.i');
  30.    
  31.    
  32.  
  33.     //Excel 2003
  34.     $PHPExcel = PHPExcel_IOFactory::createWriter($PHPExcel, 'Excel5');
  35.  
  36.     //Creamos el Archivo   
  37.     $PHPExcel->save("$destino/$nombre.xls");
  38.     unset($PHPExcel);
  39. }

Al copiar y pegar se pierden las tabulaciones y queda raro.

Luego dentro de procesa.php tengo 2 includes con 2 ficheros que hacen operaciones diferentes para obtener un array con los datos y al final cada uno de ellos hace un generaExcel($resultado, $nombre, $destino).

Si los pongo por separado no hay problema, como ponga los dos me da un error de que no se puede redeclarar la funcion $tipo_string. La cual fue declarada al inicio de procesar.php sólo se carga una vez! no entiendo por qué dice que no se puede redeclarar.

He probado cambiando el nombre de la funcion para que no coincida con el nombre de la variable y me sigue dando el mismo error. Aquí un esbozo de procesa.php:

Código PHP:
Ver original
  1. #procesa.php
  2. require_once('./generaExcel.php');
  3. require_once('./procesa1php'); //Incluye una llamada a generaExcel
  4. require_once('./procesa2php'); //Incluye una llamada a generaExcel

Me da el citado error. No se puede redeclarar la función (se declara en generaExcel.php)!!!

Alguna idea? es para volverse loco