580
צפיות
צפיות
2
תשובות
תשובות
מהו תווח החיים של אובייקט? PHP4
שלום.
ממשתי ב- PHP4 מחלקה שבאחת המתודות שלה היא יוצר אוביקט ומחזירה אותו.
מה קורה ברגע ההחזרה,
האוביקט בתוך המתודה נהרס? ונותר עותק שלו בשביל להחזיר למשתמש במתודה הזו?
או שאולי האוביקט לא נהרס ומוחזר מצביע אליו ?
תודה לכל מי שעונה.
אגב השאלה לצורך ממוש SINGELTON אם צריך קוד אצרף אותו.
2 תשובות
טווח הכרה של משתנה/אובייקט – scope
באופן כללי, אובייקט מוכר בתוך הבלוק בו בוא מוגדר.
מהו בלוק?
כל מקטע קוד התחום בין סוגריים מסולסלים.
לדוגמה:
function foo($param)
{
int x,y;
return $param*x/y;
}
המשתנים x ו-y מוכרים רק בתוך הפונקציה הזו מאחר והם מוגדרים בתוך הבלוק עם הסוגריים המסולסלות.
עם היציאה מהפונקציה, משתנים אלו נהרסים.
אבל ב-PHP יש גם מגבלה בגישה למשתנים שלא הוגדרו בתוך פונקציות.
כל עוד הגדרות האבטחה נכונות ונמנעת משימוש ב-register_globals, אזי
בתוך הפונקציה לא תכיר גם משתנים שהוגדרו מחוצה לה (גלובליים) ולכן תאלץ להתשמש בקריאה לאותם משתנים כל ידי global או בשליחת אותם משתנים כפרמטרים.
טווח הכרה נוסף, הינו זמן ריצת הדף – אובייט שנוצר בעת ריצת דף, יהרס בסוף תהליך ריצתו. כלומר, באופן רגיל אינך יכול לשמור מופע של אובייקט בין שני טעינות של דפים.
הנה דוגמה לתבנית הפיתוח singelton באמצעות php:
class sample
{
function sample() { /***/ }
function &getInstance() {
static $instance = null;
if (!is_object($instance)) {
$instance = &new sample();
}
return &$instance;
}
}
ועל מנת ליצור אובייקט מסוג singelton:
$obj = sample::getInstance();
מקווה שמספיק מובן…(:
תודה רבה, בדיוק מה שהייתי צריך