Es un solo archivo PHP, no hay includes ni nada por el estilo, lo que ves es como empieza y como termina, lo del medio que no esta son los métodos que se usan en el constructor, pero el único método que provoca el "fallo" es el pintarMapa.
Como determine eso? Lo que hice fue comentar todas las lineas del constructor (es decir Mapa($,$)), salvo obviamente las que corresponden a la apertura, escritura y cierre del archivo en ESE método (en otros métodos solo escribo una linea que indica que método se ejecuto).
Luego a medida que descomentaba cada linea hacia una carga de la pagina. Ninguno de los otros métodos genera un doble log. Solo el método de pintarMapa(), pero veras que el método pintarMapa()
se ejecuta luego de cerrar el archivo. Esto lo remarco por que olvide comentar que agregue la posibilidad de guardar la imagen como archivo o simplemente mostrarla. De haber dos ejecuciones del código implicaría que se generaran 2 imágenes para los respectivos logs. Pero no ocurre esto... solo se genera una imagen. Es decir que:
Código PHP:
Ver original<?
class Mapa{
//atributos varios
function Mapa($_ancho,$_alto){//el constructor
Global $c;
$c++;
$this->logFile=fopen('Log-'.date("ydm").'-'.date("His").'.txt','a+'); fwrite($this->logFile,$c.'function Mapa($,$) on line 22'.chr(13).chr(10)); $this->ancho=$_ancho;
$this->alto=$_alto;
$this->inicializarGrilla();//No llama ninguna otra función
$this->crearCaminos();//Llama varias subfunciones...
//$this->pintarMapa(false);// NOTAR QUE ESTA COMENTADA
}
//los demás métodos
}
//fuera de la clase
$c=0;
$mapa=new Mapa(8,8);
?>
Si ejecuto el codigo con la linea del pintarMapa() comentado todo lo anterior se ejecuta una vez.
Si lo ejecuto sin comentarlo. Se crean dos "logs", y el primero corresponde a la única imagen generada.
Casi es como si no tuviera sentido lo que digo, si tienes alguna sugerencia de como detectar el error soy todo ojos... lo que si, soy novato en php, hice lo del log por que no se como obtener un reporte o un debug linea a linea en php, eso es posible? como lo hago? o a que te refieres con que simplemente haga un debug?