| PHP Ръководство | ||
|---|---|---|
| Предишна страница | Глава 19. Класове и обекти (PHP 5) | Следваща страница |
Имената на функциите __construct, __destruct (Вж. също Конструктори и Деструктори), __call, __get, __set, __isset, __unset (Вж. също Предефиниране), __sleep, __wakeup, __toString, __set_state, __clone и __autoload са вълшебни в класовете на PHP. Не може да създавате функции с тези имена във вашите класове, освен ако не ги използвате по вълшебното им предназначение.
| Внимание |
|
PHP запазва всички имена на функции, започващи с __, като вълшебни. Препоръчително е да не използвате имена на функции, които започват с __ в PHP, освен ако не искате някоя документирана вълшебна функционалност. |
serialize() проверява дали в класа ви има функция с вълшебното име __sleep. Ако открие такава, то тази функция се изпълнява преди всякаква сериализация. Тя би могла да изчисти обекта и се очаква да върне масив с имената на всички променливи от този обект, които ще бъдат сериалзирани. Ако методът не върне нищо, тогава се сериализира стойността NULL и се генерира грешка от тип E_NOTICE.
Предназначението на __sleep е да затвори всички връзки към бази от данни, които обектът може да има, да съхрани незаписаните данни или да изпълни други подобни изчистващи задачи. Също така, функцията може да се използва и в случай, че имате много големи обекти, които няма нужда да бъдат съхранени изцяло.
Обратно, unserialize() провереява за наличието на функция с вълшебното име __wakeup. Ако тя съществува, функцията може да възстанови всички ресурси, които даден обект може да има.
Употребата на __wakeup е предназначена, да възстанови всички връзки към бази от данни, които може да са били прекъснати по време на сериализацията и за извършване на други повторно-инициализираши задачи.
Методът __toString позволява на даден клас да реши как ще реагира, в случай че бъде преобразуван до низ.
Струва си да се отбележи, че до PHP 5.2.0 методът __toString ще бъде извикан, само когато е директно комбиниран с echo() или print(). От PHP 5.2.0 се извиква в контекста на всеки низов тип (например при printf() с модификатора %s), но не и в контекста на други типове (например при модификатора %d). От PHP 5.2.0, при преобразуването на обекти в низ без метода __toString ще се генерира E_RECOVERABLE_ERROR
Този статичен метод се извиква за класове експортирани от функцията var_export() от PHP 5.1.0.
Единственият параметър на метода е масив, съдържащ експортираните свойства във вида array('property' => value, ...).
| Предишна страница | Начало | Следваща страница |
| Шаблони за дизайн | Начало на раздела | Ключова дума final |