ob_get_level

funkcja

Zwraca liczbę aktywnych poziomów bufora wyjścia — 0 oznacza brak bufora, każde ob_start zwiększa wynik o 1.

ob_get_level(): int

ob_get_level informuje, ile buforów wyjścia jest aktualnie otwartych. Bufory można zagnieżdżać — każde ob_start() otwiera nowy poziom, każde ob_end_clean() / ob_end_flush() zamyka jeden. Wartość 0 oznacza, że żaden bufor nie jest aktywny.

Funkcja przydaje się do defensywnego porządkowania buforów (np. gdy nie wiesz, czy kod biblioteki zewnętrznej zostawił bufor otwarty) oraz do debugowania zagnieżdżonych wywołań.

<?php
declare(strict_types=1);

echo ob_get_level(); // 0 — brak bufora

ob_start();
echo ob_get_level(); // 1
ob_start();
echo ob_get_level(); // 2

ob_end_clean();
echo ob_get_level(); // 1
ob_end_clean();
echo ob_get_level(); // 0

Wynik: 00. Pierwsze i ostatnie echo trafiają na wyjście, bo nie ma aktywnego bufora. Pozostałe echo są zapisywane do bufora i odrzucane przez ob_end_clean.

Wzorzec "zamknij wszystkie poziomy" używany w porządkowaniu:

<?php
declare(strict_types=1);

while (ob_get_level() > 0) {
    ob_end_clean();
}
📘 Naucz się w lekcji →