Nie wiem dlaczego, ale ten kod pracował dla mnie miesiąc temu ... może uaktualniłem php, ale nie pamiętam. Próbowaliśmy tego z PHP 5.2.17 i 5.3.6Obiekt klasy nie działa wewnątrz wywołania oddzwonienia
Dlaczego nie można użyć obiektu klasy wewnątrz wywołania zwrotnego funkcji 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###
wyjściowa wynosi:
PHP Notice: Trying to get property of non-object in /Users/qxxx/Sites/test/test.php on line 8
This is the
powinno być:
This is the awesome Title
Rzeczywiście, aby rozwinąć nieco: ważną częścią tego jest _ "niereferencyjne zmienne" _ są niszczone, a wspomniane nie są. Doskonały przykład, dlaczego 'global''s sprawia, że kod jest trudniejszy, a właściwe przekazywanie referencji i argumentów jest preferowane. – Wrikken