Siempre que manejamos PHP, existe la problemática de mezclar la vista y funcionalidad. Este problema se da a varios niveles y es más complejo y da más quebraderos de cabeza cuanto más se enrevesan código y funcionalidad, el caso típico es cuando guardamos parte de la vista en una cadena y la devolvemos o la imprimimos. Al meter la vista dentro de la cadena, el código se vuelve poco legible y además hay ocasiones en las que este métodos llega a ser inoperable.
Veamos un ejemplo:
$ cadena = "Voy a preparar una cadena con parte de la vista"; $ cadena .= "Para devolverla"; $ cadena .= "Aquí podríamos meter código HTML"; return $ cadena;
Ese caso llevado al extremo sería mucho más grande, con variedad de código HTML y JavaScript en su interior y con un enrevesamiento tal que haría muy complejo su manejo y mantenimiento.
Gracias a que PHP nos ofrece multitud de soluciones, la solución es bien sencilla. Usar las funciones de búfer. Un apunte rápido:
- ob_start(): abre el búfer
- ob_get_contents(): obtiene los elementos que hay en ese momento en el búfer
- ob_end_clean(): cierra el búfer y lo limpia
Con estas tres funciones, el código equivalente al de arriba, sería tan simple como el que sigue:
ob_start(); ?> Voy a preparar una cadena con parte de la vista Para devolverla Aquí podríamos meter código HTML <?php $ cadena = ob_get_contents(); ob_end_clean(); return $ cadena;
Podremos jugar tanto como queramos con el código HTML, en lugar de hacer una salida a pantalla, se acumulará en el búfer y podremos manejarlo en forma de variable. Además de ese tipo de salida, podremos manejar salidas con echos también para acumular datos en el búfer.
Sin lugar dudas, una funcionalidad estupenda de PHP para hacer más legible el código y ampliar más aún su potencia. Yo lo uso prácticamente a diario desarrollando con WordPress.