phpbar.de logo

Mailinglisten-Archive

[php] ob_start()

[php] ob_start()

Thomas Feyrer Dante_(at)_altmuehlnet.de
Tue, 12 Sep 2000 19:46:19 +0200


At 19:23 12.09.2000 +0200, Mario Zott wrote:
>probier gerade output-buffering zu betreiben funktioniert aber nicht.
>
><snip>
>echo "irgendwas";
>ob_start();
>echo "hallo";
>include("name.tpl");
>ob_end_flush();
></snip>
>
>bei beiden rechnern das gleiche problem (string wird ganz normal
>ausgegeben..)

Hi Mario,

das Verhalten ist ja auch richtig...

Aus dem Manual:
ob_start()   -- Turn on output buffering
ob_end_flush -- Flush (send) the output buffer and turn off
                output buffering 

du startest das OB, und dann lässt du alles aus dem Buffer aus-
geben und beendest das OB.

Was hast du denn vor?

Beispiel bei dem OB nötig ist:
<?
function error($error, $line, $file, $var) {
    ob_start();
    print_r($var);
    $var_content = ob_get_contents();
    ob_end_clean();
    echo(sprintf(
        "Fehler: %s\nZeile: %s\nDatei: %s\nInhalt der Variable:\n%s",
        $error,
        $line,
        $file,
        $var_content
    ));
}
?>
Damit kann man komfortabel bei seiner Error-Function das
Debugging mit einbauen. Man übergibt der error-Function
als 4. Argument eine Variable (z.B. wenn man mit Klassen
arbeitet $this) und erhält deren kompletten Inhalt, egal
ob Verschachtelte Arrays, Objekte, Stings, usw.

Man kann anstatt print_r() nartürlich auch var_dump() ver-
wenden, je nach belieben.

Wiso hier OB nötig ist:
print_r() bzw. var_dump() geben die Inhalte immer direkt
aus, d.h. man kann sie ohne die OB-funktionen nicht ab-
fangen.

Bye
 Dante



php::bar PHP Wiki   -   Listenarchive