diff --git a/language/oop5/magic.xml b/language/oop5/magic.xml index a68891138..cdea23054 100644 --- a/language/oop5/magic.xml +++ b/language/oop5/magic.xml @@ -1,25 +1,25 @@ - - + + + - - + Магические методы Имена методов - __construct, - __destruct, - __call, - __callStatic, - __get, - __set, - __isset, - __unset, - __sleep, - __wakeup, - __toString, - __invoke, - __set_state и - __clone + __construct(), + __destruct(), + __call(), + __callStatic(), + __get(), + __set(), + __isset(), + __unset(), + __sleep(), + __wakeup(), + __toString(), + __invoke(), + __set_state() и + __clone() зарезервированы для "магических" методов в PHP. Не стоит называть свои методы этими именами, если вы не хотите использовать их "магическую" функциональность. @@ -35,41 +35,47 @@ - <literal>__sleep</literal> и <literal>__wakeup</literal> + + <link linkend="language.oop5.magic.sleep">__sleep()</link> и + <link linkend="language.oop5.magic.sleep">__wakeup()</link> + Функция serialize проверяет, присутствует ли в вашем - классе метод с "магическим" именем __sleep. Если это так, - то этот метод выполняется прежде любой операции сериализации. Он может + классе метод с "магическим" именем __sleep(). + Если это так, то этот метод выполняется прежде любой операции сериализации. Он может очистить объект и предполагается, что будет возвращен массив с именами всех переменных объекта, который должен быть сериализован. Если метод ничего не возвращает кроме &null;, то это значит, что объект сериализован и выдается предупреждение E_NOTICE. - - Недопустимо возвращать в __sleep имена приватных свойств - объекта в родительский класс. Это приведет к предупреждению - E_NOTICE. Вместо этого вы можете использовать интерфейс - Serializable. - + + Недопустимо возвращать в __sleep() + имена приватных свойств объекта в родительский класс. Это + приведет к предупреждению E_NOTICE. + Вместо этого вы можете использовать интерфейс + Serializable. + - Обычно __sleep используется для передачи ожидаемых - данных или для выполнения обычных задач их очистки. Также, этот метод - можно выполнять в тех случаях, когда вы не хотите сохранять очень большие - объекты полностью. + Рекомендованное использование __sleep() + состоит в завершении работы над данными, ждущими обработки или + других подобных задач очистки. Кроме того, этот метод можно + выполнять в тех случаях, когда нет необходимости сохранять + полностью очень большие объекты. С другой стороны, функция unserialize проверяет - наличие метода с "магическим" именем __wakeup. + наличие метода с "магическим" именем + __wakeup(). Если такой имеется, то он может воссоздать все ресурсы объекта, принадлежавшие ему. - Обычно __wakeup используется для восстановления - любых соединений с базой данных, которые могли быть потеряны во время - операции сериализации и выполнения других операций повторной - инициализации. + Обычно __wakeup() + используется для восстановления любых соединений с базой данных, + которые могли быть потеряны во время операции сериализации и + выполнения других операций повторной инициализации. Sleep и wakeup @@ -113,9 +119,9 @@ class Connection - <literal>__toString</literal> + <link linkend="language.oop5.magic.tostring">__toString()</link> - Метод __toString позволяет классу решать + Метод __toString() позволяет классу решать самостоятельно, как он должен реагировать при преобразовании в строку. Например, что напечатает echo $obj;. Этот метод должен возвращать строку, иначе выдастся неисправимая ошибка @@ -126,7 +132,7 @@ class Connection - Ранее, до PHP 5.2.0, метод __toString вызывался - только непосредственно в сочетании с функциями echo - или print. + Ранее, до PHP 5.2.0, метод __toString() + вызывался только непосредственно в сочетании с функциями + echo или print. Начиная с PHP 5.2.0, он вызывается в любом строчном контексте (например, в printf с модификатором %s), но не в контекстах других типов (например, с %d модификатором). Начиная с PHP 5.2.0, преобразование объекта в строку при отсутствии - метода __toString вызывает ошибку - E_RECOVERABLE_ERROR. + метода __toString() + вызывает ошибку E_RECOVERABLE_ERROR. - <literal>__invoke</literal> + <link linkend="language.oop5.magic.invoke">__invoke()</link> - Метод __invoke вызывается, когда скрипты пытается - выполнить объект как функцию. + Метод __invoke() + вызывается, когда скрипт пытается выполнить объект как функцию. @@ -180,7 +186,7 @@ echo $class; - Использование <literal>__invoke</literal> + Использование <link linkend="language.oop5.magic.invoke">__invoke()</link> - <literal>__set_state</literal> + <link linkend="language.oop5.magic.set-state">__set_state()</link> Этот статический метод вызывается для тех классов, которые экспортируются функцией @@ -219,7 +225,7 @@ bool(true) свойств в виде array('property' => value, ...). - Использование <literal>__set_state</literal> (начиная с PHP 5.1.0) + Использование <link linkend="language.oop5.magic.set-state">__set_state()</link> (начиная с PHP 5.1.0)