Forum und email

"פונקציות הקסם": __sleep ו __wakeup

serialize() בודק אם למחלקה יש פונקציה עם "מילת הקסם" __sleep. אם זה המצב, פונקציה זו מתחילה לרוץ לפני כל serialization. היא יכולה לנקות את האובייקט והיא אמורה להחזיר מערך עם שמות של המשתנים של אותו אובייקט שיכול להיות serialized.

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

ולהיפך, unserialize() בודק נוכחות של פונקציה עם מילת הקסם __wakeup. אם המילה נוכחת, פונקציה זו יכולה לבנות מחדש מקור כלשהו שיכול להיות לאובייקט.

השמימוש ב __wakeup נועג להקים מחדש חיבור למסד נתונים כשלהו שעלול ללכת לאיבוד במהלך serialization ולבצע reinitialization של משימה אחרת.