declare

Declare stavek je uporabljen za izvajanje direktiv za nek blok kode. Sintaksa declare stavka je podobna drugim kontrolnim strukturam za potek programa:

declare (direktiva) stavek

Z direktiva določimo obnašanje declare bloka. Trenutno je prepoznana samo ena direktiva: ticks direktiva. (Poglejte spodaj za več informacij o ticks direktivi.

Stavek declare bloka bo izveden - kako pa bo izveden in kaj se bo zgodilo, je pa določeno s podano direktivo.

Ticks

Tick je dogodek, ki se zgodi vsak N stavek, ki je izveden v declare bloku. Vrednost N je določena z uporabo ticks=N v direktivi declare bloka.

Dogodek oziroma dogodki, ki se zgodijo ob vsakem 'tick'-u, je določen z register_tick_function(). Poglejte si primer spodaj za vec informacij. Zapomnite si, da se lahko zgodi tudi več dogodkov za en tick.

Primer 11-1. Profile a section of PHP code

<?php
// A function that records the time when it is called
function profile ($dump = FALSE)
{
    static
$profile;

    
// Return the times stored in profile, then erase it
    
if ($dump) {
        
$temp = $profile;
        unset (
$profile);
        return (
$temp);
    }

    
$profile[] = microtime ();
}

// Set up a tick handler
register_tick_function("profile");

// Initialize the function before the declare block
profile ();

// Run a block of code, throw a tick every 2nd statement
declare (ticks=2) {
    for (
$x = 1; $x < 50; ++$x) {
        echo
similar_text (md5($x), md5($x*$x)), "<br />;";
    }
}

// Display the data stored in the profiler
print_r (profile (TRUE));
?>
Zgornji primer izmeri hitrost PHP kode v 'declare' bloku. Shrani si čas vsakič ko se izvede drugi stavek v bloku. S to informacijo lahko potem najdemo počasne dele dele v določenem segmentu kode. Obstajajo tudi druge metode; uporaba ticks je bolj primerna in jo je lažje implementirati.

Uporaba ticks je primerna za razhroščevanje, implementacijo enostavne večopravilnosti, V/I delo v ozadju in še mnogo drugih srvari.

Poglejte si tudi register_tick_function() in unregister_tick_function().