Uso de ob_start(). ¿Es esto una terrible cochinada o es algo aceptable?

385 views
Skip to first unread message

Pablo Terradillos

unread,
May 7, 2013, 4:51:18 PM5/7/13
to php...@googlegroups.com
Buenas gente,

Hace poco hablaban sobre meter HTML dentro de PHP y de porque esto era malo y lo bueno de usar templates, etc etc.

Comparto todo lo dicho, pero en este momento, por razones que no vienen al caso, estoy imposibilitado de meter un sistema de templates y se me ocurrio hacer esto:

function getFileContent($fileName) {
    ob_start();
    include($fileName);
    $content = ob_get_contents();
    ob_end_clean();

    return $content;
}

Que opinan de algo como esto?

Pablo E. Terradillos

Tordek

unread,
May 7, 2013, 5:10:17 PM5/7/13
to php...@googlegroups.com
On 07/05/13 17:51, Pablo Terradillos wrote:

> function getFileContent($fileName) {
> ob_start();
> include($fileName);
> $content = ob_get_contents();
> ob_end_clean();
>
> return $content;
> }
>
> Que opinan de algo como esto?

Que es un snippet muy corto como para darte una opini�n seria.
(Aunque pod�s reducir las 3 �ltimas l�neas a `return
ob_get_clean();`.)[0]

Es decir: �D�nde us�s esto? �por qu�?

Si lo �nico que vas a hacer con los contenidos de ese archivo es
imprimirlos una l�nea despu�s, ahorrate la magia negra de ob, y
simplemente pon� `include 'template.php'`.

Si us�s el contenido generado (porque si est�s usando include
imagino que es porque hay PHP que quer�s evaluar... si no, us�
file_get_contents), �qu� hac�s con esto?

> Pablo E. Terradillos

[0] creo que nunca puse tantos caracteres especiales en na misma
l�nea...
--
Guillermo O. �Tordek� Freschi. Programador, Escritor, Genio Maligno.
http://tordek.com.ar :: http://twitter.com/tordek

Pablo Terradillos

unread,
May 7, 2013, 8:32:58 PM5/7/13
to php...@googlegroups.com
Gracias!

El uso es para una "clase" que tiene un monton de código html-con-variables ("Hola $nombre hoy es $dia") que se usa a modo de "helper" y queria poder mover todo ese texto a archivos separados.

En realidad hay de todo, mezclas como la que te dije y texto completamente estatico.

Pablo E. Terradillos


2013/5/7 Tordek <ked...@gmail.com>
On 07/05/13 17:51, Pablo Terradillos wrote:

function getFileContent($fileName) {
     ob_start();
     include($fileName);
     $content = ob_get_contents();
     ob_end_clean();

     return $content;
}

Que opinan de algo como esto?

Que es un snippet muy corto como para darte una opinión seria. (Aunque podés reducir las 3 últimas líneas a `return ob_get_clean();`.)[0]

Es decir: ¿Dónde usás esto? ¿por qué?

Si lo único que vas a hacer con los contenidos de ese archivo es imprimirlos una línea después, ahorrate la magia negra de ob, y simplemente poné `include 'template.php'`.

Si usás el contenido generado (porque si estás usando include imagino que es porque hay PHP que querés evaluar... si no, usá file_get_contents), ¿qué hacés con esto?

Pablo E. Terradillos

[0] creo que nunca puse tantos caracteres especiales en na misma línea...

--
Guillermo O. «Tordek» Freschi. Programador, Escritor, Genio Maligno.
http://tordek.com.ar :: http://twitter.com/tordek

--
Has recibido este mensaje porque estás suscrito al grupo "Grupo PHP Argentina" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a php-arg+unsubscribe@googlegroups.com.
Para publicar una entrada en este grupo, envía un correo electrónico a php...@googlegroups.com.
Visita este grupo en http://groups.google.com/group/php-arg?hl=es.
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.



Fede

unread,
May 7, 2013, 8:55:53 PM5/7/13
to php...@googlegroups.com
ob_start/ob_get_contents/ob_end_clean se puede llegar a utilizar para generar un sistema de templates propio, por ejemplo cuando pedis parsear una vista y no queres q se imprima en pantalla sino que necesitas que te la devuelva como string pq es entrada para otra función u otra vista... ponele...

Pero en tu ejemplo, es una simple copia de la funcion file_get_contents() de php... quizas tu código es viejo, en algunas versiones de 4.x no exisita dicha func. o en el server donde esta alojado tu site no tiene habilitada esa func (la conf de php permite realizar esas restrincciones)


Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a php-arg+u...@googlegroups.com.

Para publicar una entrada en este grupo, envía un correo electrónico a php...@googlegroups.com.
Visita este grupo en http://groups.google.com/group/php-arg?hl=es.
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.
 
 



--
Federico D. Lozada Mosto

web: http://www.mostofreddy.com.ar
Twitter: @mostofreddy
Github: @mostofreddy

Pablo Terradillos

unread,
May 7, 2013, 9:43:06 PM5/7/13
to php...@googlegroups.com
Gracias, en realidad no conocia file_get_contents(). De todas formas, para la implementación real no me sirve, ya que hay procesamiento en algunos archivos que estoy incluyendo.

Mi pregunta iba más por el lado de saber si puedo llegar a tener algun side effect que no este teniendo en cuenta con ese tipo de cosas

Pablo E. Terradillos


2013/5/7 Fede <mosto...@gmail.com>
Reply all
Reply to author
Forward
0 new messages