Cita:
Iniciado por guardarmicorreo
He leído sobre las funciones ob y no encuentro nada que esté haciendo mal.
Teniendo en cuenta el primer caso:
ob_start() abre el almacenamiento en búfer y almacena lo que hay después.
ob_get_contents() obtiene el almacenamiento en búfer en el momento que es llamado y lo devuelve.
En cada función tengo ob_start, que lo podría reemplazar por un único ob_start en la función controller y haría el mismo efecto, porque son apilables.
Y en cada función retorno el ob_get_contents para devolver el búfer correspondiente a esa función.
Finalmente introduce el content en el html y retorna el html completo.
No veo que tenga nada erróneo :S
Un problema que tienes es que supones cosas antes de comprobarlas y por otro lado no lees bien lo que te instruye tu tutor pateketrueke.
.
Cita: Output buffers are stackable, that is, you may call
ob_start() while another
ob_start() is active. Just make sure that you call
ob_end_flush() the appropriate number of times. If multiple output callback functions are active, output is being filtered sequentially through each of them in nesting order.
Tienes que cerrar o vaciar el buffer tantas veces como ob_start emplees en el código. Ahora tomando tu ejemplo debiste tener algo asi:
Código PHP:
Ver original//devuelve todo el html
function controller(){
html(content());
}
//construye la estructura principal y el contenido
function html($content){
\ob_start();
?>
<html>
<head>
</head>
<body>
<p><?php echo $content ;?></p>
</body>
</html>
<?php
}
//construye el contenido
function content(){
?>
Esto es una prueba del control de salida con buffer.
<?php
}
//llama al html
controller();