8181
8282 <para >
8383 Функция <function >serialize</function > проверяет, определили ли
84- в классе метод с магическим именем <link linkend =" object.sleep" >__sleep()</link >.
85- Если метод определили, он выполняется перед сериализацией. Метод может
86- очистить объект и должен вернуть массив с именами
87- всех переменных этого объекта, которые должны быть сериализованы .
88- Если метод ничего не возвращает, то сериализуется константа &null;
84+ в классе магический метод с названием <link linkend =" object.sleep" >__sleep()</link >.
85+ Магический метод, если его определили, выполняется перед сериализацией. В методе очищают
86+ сериализуемый объект, если требуетсея, и возвращают из метода массив с названиями
87+ переменных объекта, которые требуется сериализовать .
88+ При невозврате из магического метода значения сериализуется константа &null;
8989 и выдаётся предупреждение <constant >E_NOTICE</constant >.
9090 </para >
9191 <note >
9292 <para >
9393 Методу <link linkend =" object.sleep" >__sleep()</link > нельзя
94- возвращать имена закрытых свойств в родительских классах. Это
95- приведёт к ошибке уровня <constant >E_NOTICE</constant >.
96- Вместо этого используйте метод
97- <link linkend =" object.serialize" >__serialize()</link >.
94+ возвращать названия закрытых свойств родительских классов.
95+ Это сгенерирует ошибку уровня <constant >E_NOTICE</constant >.
96+ Для сериализации закрытых родительских свойств вместо магического метода __sleep вызывают
97+ магический метод <link linkend =" object.serialize" >__serialize()</link >.
9898 </para >
9999 </note >
100100 <note >
101101 <para >
102- Начиная с PHP 8.0.0 возврат из метода <link linkend =" object.sleep" >__sleep()</link >
103- значения, которое не является массивом,
104- генерирует предупреждение. Раньше выдавалось уведомление.
102+ Начиная с PHP 8.0.0 при возврате из метода <link linkend =" object.sleep" >__sleep()</link >
103+ значения кроме массива генерируется предупреждение.
104+ Раньше выдавалось уведомление.
105105 </para >
106106 </note >
107107 <para >
111111 </para >
112112 <para >
113113 И наоборот, функция <function >unserialize</function > проверяет
114- наличие метода с магическим именем
114+ в классе определение магического метода с названием
115115 <link linkend =" object.wakeup" >__wakeup()</link >.
116- Если метод определили, функция может восстанавливать любые ресурсы ,
117- которые может иметь объект .
116+ Методу пробуждения, если его определили в классе, доступно восстановление любых ресурсов ,
117+ которые разрешается содержать объекту .
118118 </para >
119119 <para >
120120 Назначение метода <link linkend =" object.wakeup" >__wakeup()</link > —
121121 восстановить соединения с базой данных,
122- которые могли потеряться во время сериализации,
122+ которые потерялись при сериализации,
123123 и выполнить другие задачи повторной инициализации.
124124 </para >
125125 <example >
@@ -180,20 +180,20 @@ class Connection
180180
181181 <para >
182182 Функция <function >serialize</function > проверяет, определили ли в классе
183- метод с магическим именем <link linkend =" object.serialize" >__serialize()</link >. Если метод определили,
183+ магический метод с названием <link linkend =" object.serialize" >__serialize()</link >. Если метод определили,
184184 функция выполняется перед сериализацией. Метод должен создать и вернуть ассоциативный массив пар ключ и значение,
185185 которые представляют сериализованную форму объекта.
186186 Если метод не вернул массив, выбрасывается исключение <classname >TypeError</classname >.
187187 </para >
188188 <note >
189189 <para >
190- Если в одном и том же объекте определили оба метода —
190+ При определении в классе обоих методов —
191191 и <link linkend =" object.serialize" >__serialize()</link >, и <link linkend =" object.sleep" >__sleep()</link >,
192192 PHP вызовет только метод <link linkend =" object.serialize" >__serialize()</link >.
193193 Метод <link linkend =" object.sleep" >__sleep()</link > проигнорируется.
194- Если объект реализует интерфейс <link linkend =" class.serializable" >Serializable</link >,
195194 PHP проигнорирует интерфейсный метод <literal >serialize()</literal >, и вместо него
196- будет использовать метод <link linkend =" object.serialize" >__serialize()</link >.
195+ вызовет метод <link linkend =" object.serialize" >__serialize()</link >,
196+ если класс реализует интерфейс <link linkend =" class.serializable" >Serializable</link >.
197197 </para >
198198 </note >
199199 <para >
@@ -202,22 +202,22 @@ class Connection
202202 </para >
203203 <para >
204204 И наоборот, функция <function >unserialize</function > проверяет
205- присутствие магического метода <link linkend =" object.unserialize" >__unserialize()</link >.
206- Если метод определили, PHP передаст методу массив, который восстановил и вернул метод
207- <link linkend =" object.serialize" >__serialize()</link >. Затем , если нужно,
208- метод восстанавливает свойства объекта из этого массива.
205+ доступность магического метода <link linkend =" object.unserialize" >__unserialize()</link >.
206+ PHP передаст методу массив, который восстановил и вернул метод
207+ <link linkend =" object.serialize" >__serialize()</link >, если метод определили в классе.
208+ А затем, если потребуется, метод восстановит свойства объекта из этого массива.
209209 </para >
210210 <note >
211211 <para >
212- Если в одном и том же объекте определили оба метода —
212+ При определении в классе обоих методов —
213213 и <link linkend =" object.unserialize" >__unserialize()</link >, и <link linkend =" object.wakeup" >__wakeup()</link >,
214- PHP вызовет только метод <link linkend =" object.unserialize" >__unserialize()</link >.
215- Метод <link linkend =" object.wakeup" >__wakeup()</link > проигнорируется.
214+ PHP вызовет только метод <link linkend =" object.unserialize" >__unserialize()</link >,
215+ а метод <link linkend =" object.wakeup" >__wakeup()</link > проигнорируется.
216216 </para >
217217 </note >
218218 <note >
219219 <para >
220- Функция доступна с PHP 7.4.0.
220+ Метод доступен с PHP 7.4.0.
221221 </para >
222222 </note >
223223 <example >
@@ -292,31 +292,31 @@ class Connection
292292 Объект, который реализует интерфейс <interfacename >Stringable</interfacename >,
293293 <emphasis >не</emphasis > будет приниматься объявлением типа <type >string</type >,
294294 если включили <link linkend =" language.types.declarations.strict" >строгую типизацию</link >.
295- Если такое поведение необходимо, то объявление типа должно принимать
295+ Объявление типа должно принимать
296296 интерфейс <interfacename >Stringable</interfacename > и строку (<type >string</type >)
297- через объединение типов.
297+ через объединение типов, если требуется такое поведение .
298298 </para >
299299 <para >
300- С PHP 8.0.0 любой класс, в котором описали метод <link linkend =" object.tostring" >__toString()</link >,
301- также будет неявно реализовывать интерфейс <interfacename >Stringable</interfacename > и, таким образом,
302- будет проходить проверку типа для этого интерфейса.
303- В любом случае рекомендуется явно реализовать интерфейс.
300+ С PHP 8.0.0 каждый класс, в котором описали магический метод <link linkend =" object.tostring" >__toString()</link >,
301+ неявно реализует интерфейс <interfacename >Stringable</interfacename >, и поэтому
302+ проходит проверку типа для этого интерфейса.
303+ В определении класса рекомендуют явно указывать, что класс реализует интерфейс.
304304 </para >
305305 <para >
306- В PHP 7.4 возвращаемое значение <emphasis >ДОЛЖНО</emphasis >
307- быть строкой ( <type >string</type >) , иначе выбрасывается исключение <classname >Error</classname >.
306+ В PHP 7.4 значение возврата <emphasis >ДОЛЖНО</emphasis >
307+ принадлежать типу <type >string</type >, иначе выбрасывается исключение <classname >Error</classname >.
308308 </para >
309309 <para >
310- До PHP 7.4.0 возвращаемое значение <emphasis >должно</emphasis > было быть
311- строкой ( <type >string</type >) , иначе выдавалась фатальная
312- ошибка <constant >E_RECOVERABLE_ERROR</constant >.
310+ До PHP 7.4.0 значение возврата <emphasis >должно</emphasis > было принадлежать
311+ типу <type >string</type >, иначе возникала фатальная
312+ ошибка уровня <constant >E_RECOVERABLE_ERROR</constant >.
313313 </para >
314314 </warning >
315315 <warning >
316316 <simpara >
317- До PHP 7.4.0 нельзя было выбрасывать исключение из метода
317+ До PHP 7.4.0 не разрешали выбрасывать исключение из метода
318318 <link linkend =" object.tostring" >__toString()</link >.
319- Это приводило к фатальной ошибке .
319+ Это провоцировало фатальную ошибку .
320320 </simpara >
321321 </warning >
322322 <example >
@@ -369,7 +369,7 @@ echo $class;
369369 вызывается, когда скрипт пытается выполнить объект как функцию.
370370 </para >
371371 <example >
372- <title >Пример использования метода <link linkend =" object.invoke" >__invoke()</link ></title >
372+ <title >Пример вызова объекта класса с методом <link linkend =" object.invoke" >__invoke()</link ></title >
373373 <programlisting role =" php" >
374374<![CDATA[
375375<?php
@@ -399,7 +399,7 @@ bool(true)
399399 </screen >
400400 </example >
401401 <example >
402- <title >Пример использования метода <link linkend =" object.invoke" >__invoke()</link ></title >
402+ <title >Пример вызова объекта класса с методом <link linkend =" object.invoke" >__invoke()</link ></title >
403403 <programlisting role =" php" >
404404<![CDATA[
405405<?php
@@ -565,8 +565,8 @@ object(A)#2 (2) {
565565 если метод __set_state() не реализовали. В частности, это относится к ряду внутренних классов.
566566 </simpara >
567567 <simpara >
568- Программист несет ответственность за то, чтобы повторно
569- импортировались только те объекты , класс которых реализует метод __set_state().
568+ Программист несёт ответственность повторный
569+ импорт только тех объектов , класс которых реализует метод __set_state().
570570 </simpara >
571571 </note >
572572 </sect2 >
@@ -581,11 +581,12 @@ object(A)#2 (2) {
581581 </methodsynopsis >
582582 <para >
583583 Этот метод вызывается функцией <function >var_dump</function >, когда
584- необходимо вывести список свойств объекта. Если этот метод не определили,
585- выводится каждое свойство объекта c модификаторами public, protected и private.
584+ требуется вывести список свойств объекта. Функция выведет каждое объектное свойство
585+ c модификаторами public, protected и private,
586+ если метод не определили.
586587 </para >
587588 <example >
588- <title >Пример использования метода <link linkend =" object.debuginfo" >__debugInfo()</link ></title >
589+ <title >Пример вывода отладочной информации методом <link linkend =" object.debuginfo" >__debugInfo()</link ></title >
589590 <programlisting role =" php" >
590591<![CDATA[
591592<?php
0 commit comments