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();
}