declare – יכולת שליטה בקוד PHP שאתם לא מכירים

flow control structure שמעט מאד מכירים ויכול להיות שימושי עבור בדיקות או ווידוא חיבור של מסד נתונים.

declare הוא שיטה לשליטה בזרימה של קוד (flow control structure) המשמשת אותנו למדידות שונות. לא רבים משתמשים ב-decalre אך לעיתים הוא שימושי מאד – במיוחד בבדיקות אך לא רק. נכון לגרסת PHP 5.3 אנו יכולים להשתמש ב-declare רק יחד עם ticks, אבל בעתיד זה יכול להשתנות.

בואו ונלמד איך עושים declare! בדומה לשיטות אחרות של שליטה בזרימת קוד (כמו while) אפשר לעשות את זה בשני אופנים:


declare(ticks=1) {
    // entire script here
}

או:


declare(ticks=1);
// entire script here

נשאלת השאלה מה זה בעצם עושה? כל קוד שנמצא בתוך ה-declare (או מתחת לו) נחשב כ'טיק', טיק במקרה הזה זו לא תנועה לא רצינית אלא הוא מתקיים בכל פעם שיש פעולה כלשהי. הגדרת משתנה, חיבור של משתנה, הוספה וכל פעולה שהיא (כמעט).

שימו לב לקוד הבא, בכל פעם שמתקיים tick אז שמתי הערה:


declare (ticks=1)
{
     $pass = md5('qwerty'); /* Tick executed */
     $pass = strrev($pass);  /* Tick executed */
     echo $pass;  /* Tick executed */
}

בכל פעולה שהיא רץ tick, אם אנו רוצים ש-tick ירוץ בכל שתי פעולות, אנו נשנה את הצהרת ה-declare למשהו בסגנון הבא:


declare (ticks=2)
{
     $pass = md5('qwerty'); 
     $pass = strrev($pass); /* Tick executed */
     echo $pass; 
}


אפשר כמובן לבחור שה'טיק' ירוץ כל שלוש פעולות, או אלף פעולות לצורך העניין, למשל:


declare (ticks = 3)
{
     $pass = md5('qwerty');
     $pass = strrev($pass);
     echo $pass;  /* Tick executed */
}  

אז הבנו איך משתמשים ב-declare ומה זה tick, עכשיו נלמד על הצמדה של פונקציה שרצה בכל פעם שיש tick. נניח שיש פונקציה שאנו רוצים שתרוץ בכל פעם שמתבצע tick, כל מה שעלינו לעשות זה ליצור אותה ולהצמיד אותה ל-tick באמצעות הפונקציה register_tick_function.

הכי טוב להסביר עם דוגמא:


< ?php
function my_function() {
    print 'tick! ';
}
register_tick_function('my_function');

declare(ticks = 1) {
	 $pass = 'qwerty'; /* Tick executed */
     $pass = 'moshe';  /* Tick executed */
     $pass = 'hahaha';  /* Tick executed */-
}

בדוגמא שלעיל יודפס טיק בכל פעם שתתרחש פעולה כלשהי. אם יש לנו while או כל לולאה אחרת, טיק ירוץ על כל ריצה של לולאה.

tick הוא שימושי מאד במיוחד בבדיקות שונות ומשונות – כאשר יש לכם זליגת זכרון ואתם לא יודעים מהיכן היא מגיעה, או כהזדמנות לראות את יעילות הקוד והזמן שלוקח לסקריפט לרוץ.

פוסטים נוספים שכדאי לקרוא

עבודה בהיי טק

איך מראיינים סניורים?

השיטה שלי לבדיקת התאמה טכנית למתכנתות ולמתכנתים בכירים עם כמה שנות ניסיון.

תמונת תצוגה של מנעול על מחשב
פתרונות ומאמרים על פיתוח אינטרנט

הגנה מפני XSS עם Trusted Types

תכונה ב-CSP שמאפשרת מניעה כמעט הרמטית להתקפות XSS שכל מפתח ווב צריך להכיר וכדאי שיכיר.

מיקרו בקרים

בית חכם עם ESPHome ו Home Assistant

הסבר על הום אסיסטנט, מערכת הקוד הפתוח לבית חכם ואיך לחבר אליה מיקרובקרים.

צילום מסך של סוואגר
יסודות בתכנות

openAPI

שימוש בתשתית הפופולרית למיפוי ותיעוד של API וגם הסבר בסיסי על מה זה API

גלילה לראש העמוד