Sigueme en Twitter
«Anterior | Siguiente»

Dolores de cabeza con los espacios blancos

1/04/2008

En CakePHP, una situación muy común es que se te vaya una linea en blanco después de que has cerrado los tags de PHP en prácticamente cualquier archivo que este incluido en el framework, ya sea un helper, view, controller, component.. lo que sea.

Normalmente esto no trae problemas, pero cuando necesitas que lo que imprimes en pantalla sea absolutamente lo primero, como las declaraciones de un feed XML o un header para imprimir una imagen, si que afecta y es un dolor de cabeza buscar de archivo por archivo donde esta el espacio en blanco si tu proyecto a crecido demasiado.

Por ahi en la lista de cake, alguien público una expresión regular con sed que recursivamente busca por cualquier archivo de PHP con lineas vacías al final y las elimina:

find -name “*.php” | xargs sed -i -e :a -e ‘/^\n*$/{$d;N;ba’ -e ‘}’

Recomendaría que solo la utilizaras si tu código esta en un repositorio, para que te des cuenta de cuales archivos a modificado y donde exactamente.


Hay 4 comentarios:

  1. 2/04/2008levhita dice:

    Es por eso que la guia de Zend recomienda que no se cierren las etiquetas php al final del archivo, de esa manera nunca se te volverá a ir un espacio en blanco.

    Despues de todo el compilador no necesita mucha inteligencia para saber que debe de dejar interpretar como php despues de un EOF.

  2. 2/04/2008pablasso dice:

    Caray, eso esta recomendado? no lo sabia, creo que mi subconsciente no me dejaría en paz si hiciera eso

  3. 2/04/2008Victor De la Rocha dice:

    Yo tampoco podría vivir así =S y por cierto que a mi nunca me ha pasado…

    Por curiosidáa ¿que significa esto {$d;N;ba’ -e ‘}?

  4. 7/04/2008garaged dice:

    No puedo creer que alguien prefiera buscar los espacios, aunque sea facil, a por sanidad mental de plano no usar los terminadores

    Para eso hay separación !!, para que no contaminar la vista con el control, y usar terminadores lo unico que provoca es contaminar la vista a través de “output” generado sin intención en el control no ???, chale la neurosis puede ser de tantas formas !!

Escribe tu comentario:

¿Escribiste código? [+]

Para hacerlo más legible puedes utilizar la etiqueta <pre>.
Ejemplo: <pre lang="php" line="1"> código </pre>
  • El atributo lang indica el lenguaje de programación.
  • El atributo line indica desde donde comienza la numeración.


  Los mas frikis pueden suscribirse a los comentarios por RSS.