No sé por qué, pero este código funcionó para mí hace un mes ... tal vez actualicé el php pero no puedo recordarlo. Probé esto con PHP 5.2.17 y 5.3.6Objeto de clase que no funciona dentro de ob_start callback
¿Por qué no es posible usar un objeto de clase dentro de la devolución de llamada de una función ob_start?
<?php
$f=new stdClass();
$f->title="awesome Title";
function callback($buffer)
{
global $f;
$buffer=str_replace("###TITLE###", $f->title, $buffer);
return $buffer;
}
ob_start("callback");
?>
This is the ###TITLE###
de salida es:
PHP Notice: Trying to get property of non-object in /Users/qxxx/Sites/test/test.php on line 8
This is the
debería ser:
This is the awesome Title
De hecho, para elaborar un poco: una parte importante de esto es _ "variables sin referencia" _ se destruyen, las referencias no lo son. Un buen ejemplo de por qué 'global' tiende a hacer que el código sea más difícil, y se prefiere el paso apropiado de referencias y argumentos. – Wrikken