Skip to content

Commit f2a7f57

Browse files
authored
magic.xml Исправил формулировки
1 parent 9c8ba8d commit f2a7f57

1 file changed

Lines changed: 49 additions & 48 deletions

File tree

language/oop5/magic.xml

Lines changed: 49 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -81,27 +81,27 @@
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>
@@ -111,15 +111,15 @@
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

Comments
 (0)