Skip to content

Commit 79a3537

Browse files
authored
Update final.xml to en
1 parent a98ced6 commit 79a3537

File tree

1 file changed

+53
-26
lines changed

1 file changed

+53
-26
lines changed

language/oop5/final.xml

Lines changed: 53 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
<?xml version="1.0" encoding="utf-8"?>
2-
<!-- EN-Revision: 5e8652131e898cd3d02cd26eeb26da718a6aaf65 Maintainer: shein Status: ready -->
2+
<!-- EN-Revision: 16f66c05a4060a7d673ae1c70b656d65009407b0 Maintainer: shein Status: ready -->
33
<!-- Reviewed: no -->
44
<sect1 xml:id="language.oop5.final" xmlns="http://docbook.org/ns/docbook">
55
<title>Ключевое слово final</title>
66
<para>
7-
Ключевое слово <literal>final</literal>, которое указали перед определением метода или константы,
8-
не даёт дочерним классам переопределять этот метод или константу.
9-
Ключевое слово не даст расширить класс, если класс определили окончательным.
7+
Ключевое слово <literal>final</literal>, которое указали перед определением метода,
8+
свойства или константы, не разрешает дочерним классам переопределять
9+
метод, свойство или константу.
10+
Ключевое слово не разрешит расширить класс, если класс определили окончательным.
1011
</para>
1112
<para>
1213
<example>
@@ -35,7 +36,7 @@ class ChildClass extends BaseClass
3536
echo "Вызван метод ChildClass::moreTesting()\n";
3637
}
3738
}
38-
// Приводит к фатальной ошибке: Cannot override final method BaseClass::moreTesting()
39+
// Переопределение финального метода вызовет ошибку Fatal error: Cannot override final method BaseClass::moreTesting()
3940
4041
?>
4142
]]>
@@ -51,30 +52,51 @@ class ChildClass extends BaseClass
5152
5253
final class BaseClass
5354
{
54-
public function test()
55-
{
56-
echo "Вызван метод BaseClass::test()\n";
57-
}
55+
public function test()
56+
{
57+
echo "Вызвали метод BaseClass::test()\n";
58+
}
5859
59-
// Поскольку класс уже окончательный, ключевое слово final избыточно
60-
final public function moreTesting()
61-
{
62-
echo "Вызван метод BaseClass::moreTesting()\n";
63-
}
60+
// Поскольку класс уже окончательный, ключевое слово final избыточно
61+
final public function moreTesting()
62+
{
63+
echo "Вызвали метод BaseClass::moreTesting()\n";
64+
}
6465
}
6566
6667
class ChildClass extends BaseClass {}
67-
// Приводит к фатальной ошибке: Class ChildClass may not inherit from final class (BaseClass)
68+
// Наследование финального класса вызовет ошибку Fatal error: Class ChildClass may not inherit from final class (BaseClass)
6869
6970
?>
7071
]]>
7172
</programlisting>
7273
</example>
7374
</para>
74-
<para>
75-
<example xml:id="language.oop5.final.example.php81">
76-
<title>Пример окончательной константы, которые появились в PHP 8.1.0</title>
77-
<programlisting role="php">
75+
<example>
76+
<title>Пример финального свойства, которые появились с PHP 8.4.0</title>
77+
<programlisting role="php">
78+
<![CDATA[
79+
<?php
80+
81+
class BaseClass
82+
{
83+
final protected string $test;
84+
}
85+
86+
class ChildClass extends BaseClass
87+
{
88+
public string $test;
89+
}
90+
91+
// Переопределение финального свойства вызовет ошибку Fatal error: Cannot override final property BaseClass::$test
92+
93+
?>
94+
]]>
95+
</programlisting>
96+
</example>
97+
<example xml:id="language.oop5.final.example.php81">
98+
<title>Пример финальной константы, которые появились с PHP 8.1.0</title>
99+
<programlisting role="php">
78100
<![CDATA[
79101
<?php
80102
@@ -88,20 +110,25 @@ class Bar extends Foo
88110
public const X = "bar";
89111
}
90112
91-
// Фатальная ошибка: Bar::X cannot override final constant Foo::X
113+
// Переопределение финальной константы вызовет ошибку Fatal error: Bar::X cannot override final constant Foo::X
92114
93115
?>
94116
]]>
95-
</programlisting>
96-
</example>
97-
</para>
117+
</programlisting>
118+
</example>
119+
98120
<note>
99121
<simpara>
100-
Свойства нельзя объявлять окончательными: только классы, методы и константы (с PHP 8.1.0)
101-
разрешено объявлять окончательными.
122+
С PHP 8.0.0 закрытые методы, за исключением <link linkend="language.oop5.decon.constructor">
123+
конструкторов
124+
</link>, нельзя объявлять финальными.
102125
</simpara>
126+
</note>
127+
<note>
103128
<simpara>
104-
С PHP 8.0.0 закрытые методы, кроме конструктора, нельзя объявлять окончательными.
129+
Свойства, которые объявили c закрытой областью установки видимости
130+
<link linkend="language.oop5.visibility-members-aviz"><literal>private(set)</literal></link>,
131+
неявно получают ключевое слово <literal>final</literal>.
105132
</simpara>
106133
</note>
107134
</sect1>

0 commit comments

Comments
 (0)