Forum und email

declare

מבנה ה-declare משמש לקביעת הוראת הפעלה לגבי בלוק מסויים. התחביר דומה לתחביר של מבני-בקרה אחרים:

declare (directive) statement

חלק ה-directive (הוראה) מאפשר את קביעת התנהגות בלוק ה-declare. לעת עתה, ההוראה היחידה שקיימת היא הוראת ה-ticks. (קראו בהמשך למידע נוסף על הוראת ticks ותחבירה)

חלק ה-statement בפקודת declare הוא פקודה או בלוק של פקודות שיורצו. פרמטר ה-directive יקבע את אופן ההרצה של הפקודות ותופעות נוספות שמתלוות להרצתו.

Ticks

ארוע ה-ticks מתרחש כל N פעמים שרצה פקודה ברמה הנמוכה (low-level) על-ידי המפרש בבלוק שהוגדר לכך בפקודת declare. הערך של N הוא פרמטר שמועבר לפקודת ה-declare על-ידי הוראה בצורת ticks=N.

הפעולות שיתבצעו בעקבות כל ארוע tick יקבעו על-ידי הפונקציה register_tick_function(). קראו בדוגמה הבאה למידע נוסף. שימו לב לכך שאפשר לבצע יותר מאירוע אחד לכל tick.

Example#1 ניתוח של קוד PHP

<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)), "&lt;br&gt;";
    }
}

// Display the data stored in the profiler
print_r (profile (TRUE));
?>
</pre>
הדוגמה בעצם מנתחת את הקוד המוגדר בבלוק ב-'declare' על-ידי הקלטת הזמן לאחר כל הרצת כל פקודה שנייה ברמה הנמוכה. מידע זה יכול לשמש לצורך בדיקת מהירות הביצוע באיזורים שונים בקוד מסויים. ניתן לבצע תהליך כזה גם בשיטות אחרות אך השימוש ב-ticks הוא הנוח ביותר להשמה.

הוראת ticks מיועדת לניפוי שגיאות, ישום ריבוי משימות פשוט, ביצוע מטלות פלט\קלט ברקע ועוד המון משימות אחרות.

קראו גם על פונקציותregister_tick_function() ו- unregister_tick_function().