2024 日本 PHP 研討會

ob_get_level

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

ob_get_level返回輸出緩衝機制的巢狀層級

說明

ob_get_level(): int

返回輸出緩衝機制的巢狀層級。

參數

此函式沒有參數。

返回值

返回巢狀輸出緩衝處理器的層級,如果輸出緩衝未啟用,則返回零。

注意

ob_get_level()ob_get_status() 返回的層級值相差一。 ob_get_level() 的第一個層級是 1,而 ob_get_status() 的第一個層級是 0

另請參閱

新增筆記

使用者貢獻的筆記 3 則筆記

匿名
12 年前
對於在腳本開頭從 ob_get_level 取得 "1" 作為返回值感到困惑的使用者:這可能意味著 PHP ini 指令 "output_buffering" 並未設為 off / 0。如果此指令未關閉,PHP 會自動為所有腳本啟動輸出緩衝(如同在腳本的第一行呼叫 ob_start)。

如果您的腳本可能在任何伺服器上運行,並且您不希望最終使用者必須設定他們的 INI,您可以在腳本開頭使用以下程式碼來停止已啟動的輸出緩衝:
<?php
if (ob_get_level()) ob_end_clean();
?>

或者,如果您總是希望在腳本開頭有一個輸出緩衝區,您可以使用相反的程式碼:
<?php
if (!ob_get_level()) ob_start();
?>
匿名
9 年前
這可以用於在使用輸出緩衝來渲染可能使用或不使用輸出緩衝的視圖時,正確地處理例外狀況。

<?php

function getView($view)
{
$level = ob_get_level();

ob_start();

try
{
include
$view;
}

catch (
Exception $e)
{
while (
ob_get_level() > $level)
{
ob_end_clean();
}

throw
$e;
}

return
ob_get_clean();
}
bonzini at gnu dot org
20 年前
即使在較舊的 PHP 版本下,您也可以使用以下程式碼來判斷輸出緩衝是否處於啟用狀態(即 ob_get_level() > 0):

<?php $ob_active = ob_get_length () !== FALSE ?>

Paolo
To Top