declare
A declare egy kódblokk számára adott futtatási direktÃvák beállÃtását teszi lehetÅ‘vé. A declare szintaxisa hasonló a vezérlési szerkezetekéhez:
declare (direktÃva) utasÃtás
A direktÃva rész a declare blokk működését szabályozza. Jelenleg csak egy direktÃva használható, a ticks. (Lásd lejjebb a ticks részleteit)
A declare blokk utasÃtás része mindig egyszer fut le. Az, hogy miképp, és milyen mellékhatásokkal, a direktÃva részben megadottaktól függ.
A declare konstukció globális hatáskörben is használható, ilyenkor hatással van minden utána következő kódra.
<?php
// ezek ekvivalensek:
// használhatod ezt:
declare(ticks=1) {
// entire script here
}
// vagy használhatod ezt:
declare(ticks=1);
// entire script here
?>
Tick-ek
A tick egy olyan esemény, amely minden N db alacsony szintű utasÃtás végrehajtásakor bekövetkezik a declare blokkban. Az N értéket a ticks=N szintaxissal kell megadni a declare blokk direktÃva részében.
Az egyes tick-ekre bekövetkezÅ‘ esemény(ek) a register_tick_function() függvénnyel állÃtható(ak) be. Lásd az alábbi példát. Akár több esemény is bekövetkezhet egy tick-re.
Example#1 A PHP kód egy részének időmérése
<?php
// Ez a függvény megjegyzi a hÃvása idÅ‘pontjait
function idopontok($visszaadni = FALSE)
{
static $idopontok;
// Visszaadja a $profile tartalmát, és törli
if ($visszaadni) {
$idok = $idopontok;
unset($idopontok);
return $idok;
}
$idopontok[] = microtime();
}
// A tick kezelÅ‘ beállÃtása
register_tick_function("idopontok");
// BeállÃtjuk az elsÅ‘ idÅ‘pontot a declare elÅ‘tt
idopontok();
// A kódblokk futtatása, minden második utasÃtás egy tick
declare(ticks = 2) {
for ($x = 1; $x < 50; ++$x) {
echo similar_text(md5($x), md5($x*$x)), "<br />";
}
}
// Az idÅ‘mérÅ‘ függvény adatainak kiÃrása
print_r(idopontok(TRUE));
?>
A tick-ek kiválóan alkalmasak hibakeresésre, egyszerű multitasking megvalósÃtására, háttérben futattott I/O-ra, és sok más feladatra.
Lásd még a register_tick_function() és az unregister_tick_function() függvényeket!