Czasami zdarza się sytuacja, w której chcemy ustawić nagłówki HTTP, gdy wysłaliśmy już na wyjście jakieś dane. Można ten problem łatwo rozwiązać stosując funkcje: ob_start() i ob_end_flush() albo poprzez odpowiednią zmianę dyrektywy output_buffering w pliku php.ini. Dziś jednak zastanowimy się jak kontrolować „wyjście funkcji”. Co mam na myśli? Popatrzmy poniżej:

function print_something ($thing) {

	echo $thing;

}

print_something('hello world');

Tutaj wynik działania od razu trafia nam na wyjście. Czasami jednak przydaje się dodatkowa „obróbka” tego co dostajemy po wywołaniu funkcji. W jaki więc sposób tego dokonać? Zobaczmy rozwiązanie:

function print_something ($thing) {

	echo $thing;

}

ob_start();

print_something('hello world');

//wynik dzialania do zmiennej

$output = ob_get_contents();

ob_get_clean();

//obrobiony wynik wywolania funkcji

echo strlen($output);

Zainteresowanych pogłębianiem wiedzy na ten temat muszę odesłać do Google lub manual’a. Być może w przyszłości poświęcę tej tematyce większą uwagę :)

1 Odpowiedź : “kontrolujemy wyjście”

  1. pikey napisał:

    Cześć! Jestem w trakcie pisania CMS’a i ten atykuł bardzo mnie zainteresował.
    W każdym swoim projekcie zaraz na początku głównego pliku (index.php) daję ‘session_start()’, co wydaje mi się nieco nieoptymalnym rozwiązaniem, kiedy sesje nie są potrzebne (user nie jest zalogowany, nie beda przechowywane w sesjach żadne dane z wirtualnego koszyka internetowego itp).

    Wydaje mi się, że własnie z ob_start, ob_clean mogę coś z tym zrobić, ale blog a manual to nie to samo ;)
    Z niecierpliwością czekam na Twoje reflekcje dotyczące tego tematu :)

Pozostaw Odpowiedź