You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
но нельзя определить только тип <type>array</type>.
109
+
но нельзя определить параметр с типом <type>array</type>, поскольку тип <type>array</type> не принадлежит ни самому строковому типу, ни надтипу строки.
112
110
</simpara>
113
111
<simpara>
114
112
В примере по крайней мере один хук ссылается на само свойство <code>$this->foo</code>,
@@ -146,8 +144,6 @@ class Example
146
144
}
147
145
}
148
146
}
149
-
150
-
?>
151
147
]]>
152
148
</programlisting>
153
149
</example>
@@ -178,8 +174,6 @@ class Example
178
174
}
179
175
}
180
176
}
181
-
182
-
?>
183
177
]]>
184
178
</programlisting>
185
179
</example>
@@ -201,8 +195,6 @@ class Example
201
195
set => strtolower($value);
202
196
}
203
197
}
204
-
205
-
?>
206
198
]]>
207
199
</programlisting>
208
200
</example>
@@ -318,8 +310,6 @@ class Example
318
310
}
319
311
}
320
312
}
321
-
322
-
?>
323
313
]]>
324
314
</programlisting>
325
315
</example>
@@ -349,26 +339,24 @@ class Rectangle
349
339
$s = new Rectangle(4, 5);
350
340
print $s->area; // Выводит 20
351
341
$s->area = 30; // Ошибка, поскольку для свойства не определили комбинацию записи
352
-
353
-
?>
354
342
]]>
355
343
</programlisting>
356
344
</example>
357
345
<simpara>
358
-
Для виртуального свойства разрешается определять оба хука, как <literal>get</literal>, так и <literal>set</literal>.
346
+
Для виртуальных свойств поддерживается определение обоих хуков: <literal>get</literal> и <literal>set</literal>.
359
347
</simpara>
360
348
</sect2>
361
349
<sect2>
362
350
<title>Об области видимости</title>
363
351
<simpara>
364
-
Хуки действуют в области видимости модифицуируемого объекта.
352
+
Хуки действуют в области видимости модифицируемого объекта.
365
353
Поэтому хукам доступны открытые, защищённые и закрытые методы и свойства объекта,
366
-
включая свойства со своими хуками.
367
-
Доступ к другому свойству из хука не обходит хуки, которые определили для другого свойства.
354
+
включая свойства с хуками.
355
+
Хуки свойств срабатывают при каждом обращении к свойству, даже при обращении из хука другого свойства.
368
356
</simpara>
369
357
<simpara>
370
-
Следствие этого состоит в том, что нетривиальным хукам доступен
371
-
вызов метода произвольной сложности, если потребуется.
358
+
За счёт доступа к членам объекта и срабатывания при каждой операции чтения или записи
359
+
хуки поддерживают не только тривиальную логику, но и, если потребуется, вызов методов произвольной сложности.
372
360
</simpara>
373
361
<example>
374
362
<title>Пример вызова метода из хука</title>
@@ -394,8 +382,6 @@ class Person
394
382
return $value;
395
383
}
396
384
}
397
-
398
-
?>
399
385
]]>
400
386
</programlisting>
401
387
</example>
@@ -466,8 +452,6 @@ class Manager extends User
466
452
set => strtoupper($value);
467
453
}
468
454
}
469
-
470
-
?>
471
455
]]>
472
456
</programlisting>
473
457
</example>
@@ -482,10 +466,10 @@ class Manager extends User
482
466
Это то же поведение, что и у окончательных методов.
483
467
</simpara>
484
468
<simpara>
485
-
В дочернем классе разрешается определять или переопределять отдельные хуки для свойства
486
-
путём переопределения свойства и только тех хуков, которые классу требуется переопределить.
487
-
В дочернем классе также возможно добавить хуки к свойству, для которого хуки не определили прежде.
488
-
Практически, это то же самое, как если бы хуки были методами.
469
+
Подклассы поддерживают определение своих хуков и переопределение отдельных хуков родительских свойств.
470
+
В подклассах хуки переопределяют путём переопределения свойства только с конкретными хуками.
471
+
Дочерние классы поддерживают также добавление свойствам хуков, которые не определили в родительском классе.
472
+
Практически, правила переопределения хуков аналогичны правилам переопределения методов.
489
473
</simpara>
490
474
<example>
491
475
<title>Наследование хуков</title>
@@ -511,8 +495,6 @@ class PositivePoint extends Point
511
495
}
512
496
}
513
497
}
514
-
515
-
?>
516
498
]]>
517
499
</programlisting>
518
500
</example>
@@ -570,8 +552,6 @@ class PositivePoint extends Point
570
552
}
571
553
}
572
554
}
573
-
574
-
?>
575
555
]]>
576
556
</programlisting>
577
557
</example>
@@ -600,8 +580,6 @@ class CaseFoldingStrings extends Strings
0 commit comments