Forum und email

declare

De declare constructie wordt gebruikt om instructies te geven aan een blok code. De syntax van declare is gelijk aan dat van andere flow control constructies:

declare (instructie) statement
     

De instructie sectie stelt het gedrag van het declare blok in. Op dit moment wordt er slechts één instructie ondersteund: de ticks instructie. (Zie hieronder voor meer informatie over de ticks instructie)

De statement sectie van het declare blok zal uitgevoerd worden - hoe het wordt uitgevoerd en wat voor bijwerkingen er zullen optreden tijdens het uitvoeren kan afhangen van de instructie die is ingesteld in de instructie sectie.

Ticks

Een tick is een gebeurtenis die voorkomt om de N low-level statements die uitgevoerd zijn door de parser binnen het declare blok. De waarde van N is gespecificeerd met ticks=N in de instructie sectie van het declare blok.

De gebeurtenis(sen) op iedere tick is gespecificeerd met de register_tick_function() functie. Zie onderstaand voorbeeld voor meer details. Merk op dat er meer dan één gebeurtenis per tick kan voorkomen.

Example#1 Profile a section of PHP code

<pre>
<?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));
?>
</pre>
Het voorbeeld profiled de PHP code in het 'declare' blok, daarbij vastleggend de momenten waarop ieder volgend low-level statement in het blok werd uitgevoerd. Deze informatie kan dan gebruikt worden om de trage onderdelen van codesegmenten te vinden. Dit proces kan uitgevoerd worden middels andere methoden: het gebruik van ticks is handiger en eenvoudiger om te implementeren.

Ticks zijn erg geschikt voor debuggen, het implementeren van eenvoudig multitasken, achtergrond I/O en vele andere taken.

Zie ook register_tick_function() en unregister_tick_function().