Forum und email

Οι μαγικές συναρτήσεις __sleep και __wakeup

Η serialize() ελέγχει αν η κλάση σας έχει μια συνάρτηση με το μαγικό όνομα __sleep. Αν έχει, αυτή η συνάρτηση τρέχει πριν από οποιοδήποτε άλλο serialization. Μπορεί να ξεκαθαρίσει το αντικείμενο και επιστρέφει έναν πίνακα με τα ονόματα όλων των μεταβλητών του αντικειμένου που θα έπρεπε να γίνει serialization.

Η θεμιτή χρήση της __sleep είναι να κλείσει κάθε σύνδεση με βάση που μπορεί να έχει ένα αντικείμενο, να εκτελέσει δεδομένα που εκκρεμούν ή να πραγματοποιήσει παρόμοιες cleanup ενέργειες. Επίσης, η συνάρτηση είναι χρήσιμη αν έχετε πολύ μεγάλα αντικείμενα που δεν χρειάζεται να αποθηκευτούν εντελώς.

Αντίθετα, η unserialize() ελέγχει για την παρουσία μιας συνάρτησης με το μαγικό όνομα __wakeup. Αν υπάρχει, αυτή η συνάρτηση μπορεί να ανακατασκευάσει όποιαδήποτε resources που μπορεί να έχει ένα αντικείμενο.

Η επιθυμητή χρήση της __wakeup είναι να ξαναεγκαταστήσει οποιεσδήποτε συνδέσεις βάσεων που μπορεί να έχουν χαθεί κατά τη διάρκεια του serialization και να εκτελέσει άλλες διαδικασίες επαναρχικοποίησης.