《PHP8上級試験対策》「PHPの出力バッファリングとob_start()のコールバックを理解する」

  • URLをコピーしました!

はじめに

PHPの出力は通常ブラウザに直接送信されますが、ob_start() を使うと 一時的にバッファにためて加工してから出力 することができます。上級試験でもよく出題されるテーマです。

キーワード:/ob_start/出力バッファ/コールバック/ob_end_flush/

目次

ob_start() の基本

ob_start(?callable $callback = null, int $chunk_size = 0, int $flags = PHP_OUTPUT_HANDLER_STDFLAGS): bool
  • $callback : 出力バッファがフラッシュされる際に呼ばれる関数
  • $chunk_size : バッファサイズ(0なら制限なし)
  • $flags : 出力ハンドラのフラグ

コールバック関数の動作

ob_start(function($buffer){
    return "buf is '{$buffer}' .";
});

echo 'text';

ob_end_flush();

動作の流れ

  1. ob_start() で出力バッファを開始
  2. echo 'text'; → バッファに文字列が入る
  3. ob_end_flush() が呼ばれ
    • バッファをフラッシュ(出力)するタイミングで callback が呼ばれる。
    • $buffer = ‘text’ が callback に渡される。
    • callback は “buf is ‘text’ .” を返す。
  4. 結果、ブラウザ(あるいは標準出力)に"buf is 'text' ." が出力される

結果

buf is 'text' .

まとめ

  • ob_start() は出力を一時的にバッファリングできる
  • コールバック関数で 出力を加工してから送信 できる
  • 上級試験では バッファのフラッシュタイミングとコールバックの返り値 がポイント

この記事が気に入ったら
いいねしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次