שלח תשובה

זירת השאלות

373
צפיות
2
תשובות

מהו תווח החיים של אובייקט? PHP4

,‏ 24 בינואר, 2006

שלום.
ממשתי ב- PHP4 מחלקה שבאחת המתודות שלה היא יוצר אוביקט ומחזירה אותו.
מה קורה ברגע ההחזרה,
האוביקט בתוך המתודה נהרס? ונותר עותק שלו בשביל להחזיר למשתמש במתודה הזו?
או שאולי האוביקט לא נהרס ומוחזר מצביע אליו ?

תודה לכל מי שעונה.
אגב השאלה לצורך ממוש SINGELTON אם צריך קוד אצרף אותו.

תגיות:

2 תשובות

  1. fat fish הגיב:

    טווח הכרה של משתנה/אובייקט – 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();

    מקווה שמספיק מובן…(:

שלח תשובה