Compzone.Org :: Podręcznik PHP :: declare
Pytania w drugiej edycji Testu PHP powinny być:
Trudniejsze
Łatwiejsze
Skomplikowane
Na myślenie
Do liczenia
Sonda Wyniki

Add to Google

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 16-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().

Copyright © 2005-2006 Compzone.Org. Kopiowanie i wykorzystywanie materiałów zawartych na tej stronie bez zgody autora zabronione!