Non so perché, ma questo codice ha funzionato per me un mese fa ... forse ho aggiornato il php ma non riesco a ricordare. Ho provato questo con PHP 5.2.17 e 5.3.6Oggetto di classe non funzionante all'interno di callback ob_start
Perché non è possibile utilizzare un oggetto di classe all'interno del callback di una funzione 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###
uscita è:
PHP Notice: Trying to get property of non-object in /Users/qxxx/Sites/test/test.php on line 8
This is the
dovrebbe essere:
This is the awesome Title
In effetti, per elaborare un po ': una parte importante di questo è _ "variabili senza riferimento" _ sono distrutti, quelli di riferimento non lo sono. Un bell'esempio per cui i 'global' tendono a rendere il codice più difficile, e il passaggio corretto di riferimenti e argomenti è preferito. – Wrikken