Podręcznik PHP
Poprzedni | Rozdział 11. Struktury kontrolne | Następny

# `declare`

Instrukcja `declare` służy do ustawienia dyrektyw wykonawczych dla bloku kodu. Składnia instrukcji jest podobna do składni innych struktur kontrolnych:

    declare (dyrektywa) instrukcje

Argument `dyrektywa` pozwala na ustawienie zachowania się danego bloku `declare`. W chwili obecnej rozpoznawana jest tylko jedna dyrektywa: `ticks`. (Więcej informacju na temat dyrektywy ticks w dedykowanym podrozdziale).

Kod zawarty w bloku `instrukcje` będzie wykonywany. Sposób i poboczne efekty wykonania tego kodu mogą zależeć od argumentu `dyrektywa`.

## Ticks

Tyknięcie (tick) jest zdarzeniem, które następuje po każdych `N` niskopoziomowych instrukcjach wykonywanych przez parser wewnątrz bloku `declare`. Wartość parametru `N` jest określana przez umieszczenie wyrażenia `ticks=`N`` wewnątrz argumentu `dyrektywa` danego bloku `declare`.

Zdarzenie wywoływane na każde tyknięcie określa się przez użycie funkcji register_tick_function(). Więcej szczegółów znajduje się w poniższym przykładzie. Proszę pamiętać, że z każdym tyknięciem może być wywoływane więcej niż jedno zdarzenie.

Przykład 11-1. Profilowanie sekcji kodu PHP
`<?php // funkcja, która zapisuje czas jej wywołania function profile ($wyrzuć = FALSE) { static $profile; // zwróć tablicę czasów wywołania i wykasuj jej lokalną kopię if ($wyrzuć) { $temp = $profile; unset ($profile); return ($temp); } $profile[] = microtime (); } // ustal wskaźnik tyknięcia register_tick_function("profile"); // zainicjowanie funkcji przed blokiem declare profile (); // wykonaj poniższy kod, generując tyknięcie co 2 instrukcje declare (ticks=2) { for ($x = 1; $x < 50; ++$x) { echo similar_text (md5($x), md5($x*$x)), "<br />"; } } // Wyświetl dane przechowywane w profilerze print_r (profile (TRUE)); ?>`

Powyższy przykład profiluje kod PHP wewnątrz bloku "declare", zapisując czas wywołania co drugiej niskopoziomowej instrukcji w bloku instrukcji. Informację tę można wykorzystać do wykrycia fragmentów kodu wykonywanych w zbyt wolnym tempie. Problem wyszukania takich fragmentów można zrealizować na wiele sposobów, przy czym użycie tyknięć jest najwygodniesze i najłatwiejsze do zaimplementowania.

Tyknięcia są doskonale przystosowane dla potrzeb debugowania, implementacji prostej wielozadaniowości, wykonywania operacji We/Wy w tle i wielu innych zadań.

Patrz także register_tick_function() i unregister_tick_function().

Poprzedni | Spis treści | Następny
`switch` | Początek rozdziału | return