Impresión de captura PHP / requiere salida en variable

¿Es posible agregar la salida de print () a una variable?

Tengo la siguiente situación:

Tengo un archivo php que se ve así:

title.php

<?php $content = '

Page heading

'; print($content);

Tengo un archivo php que se ve así:

page.php

 <?php $content = '
'; $content.= $this->renderHtml('title.php'); print($content);

Tengo una función renderHtml() :

 public function renderHtml($name) { $path = SITE_PATH . '/application/views/' . $name; if (file_exists($path) == false) { throw new Exception('View not found in '. $path); return false; } require($path); } 

Cuando vuelco la variable de contenido en page.php, no contiene el contenido de title.php. El contenido de title.php solo se imprime cuando se lo llama en lugar de agregarse a la variable.

Espero que esté claro lo que bash hacer. Si no lo siento, por favor dígame qué necesita saber. 🙂

¡Gracias por toda tu ayuda!

PD

He descubierto que ya había una pregunta como la mía. Pero fue con respecto al Zend FW.

Cómo capturar un resultado de vista de Zend en lugar de emitirlo

Sin embargo, creo que esto es exactamente lo que quiero hacer.

¿Cómo debo configurar la función para que se comporte así?

EDITAR

Solo quería compartir la solución final:

 public function renderHtml($name) { $path = SITE_PATH . '/application/views/' . $name; if (file_exists($path) == false) { throw new Exception('View not found in '. $path); return false; } ob_start(); require($path); $output = ob_get_clean(); return $output; } 

Puede capturar resultados con las ob_start() y ob_get_clean() :

 ob_start(); print("abc"); $output = ob_get_clean(); // $output contains everything outputed between ob_start() and ob_get_clean() 

Alternativamente, tenga en cuenta que también puede devolver valores desde un archivo incluido, como desde funciones:

a.php:

 return ""; 

b.php:

 $html = include "a.php"; // $html will contain "" 

Puede utilizar el almacenamiento en búfer de salida para capturar cualquier salida enviar ob_start () http://us3.php.net/ob_start . Capturas la salida con ob_get_flush () http://us3.php.net/manual/en/function.ob-get-flush.php .

O simplemente puede devolver la salida de title.php de la siguiente manera:

 Page heading'; return $content;