git-svn-id: https://svn.php.net/repository/phpdoc/ru/trunk@347762 c90b9560-bf6c-de11-be94-00142212c4b1
This commit is contained in:
Andrey Gromov
2019-07-17 19:37:33 +00:00
parent b3b5395711
commit 0e1c4974ca

View File

@ -1,12 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 93b9a05101ebac163e57deb362bf45ff63387f56 Maintainer: mch Status: ready -->
<!-- EN-Revision: 1319917d0ffc1a1e48fed0ebb0c2cc00615fd81d Maintainer: mch Status: ready -->
<!-- Reviewed: yes Maintainer: lex -->
<!-- $Revision$ -->
<sect1 xml:id="language.oop5.changelog" xmlns="http://docbook.org/ns/docbook">
<title>Журнал изменений ООП</title>
<para>
Здесь перечислены изменения модели ООП в PHP 5. Описания и другие примечания
этих возможностей можно найти в документации ООП PHP5.
Здесь перечислены изменения модели ООП в PHP. Описания и другие примечания
этих возможностей можно найти в документации ООП PHP.
</para>
<para>
<informaltable>
@ -18,10 +18,146 @@
</row>
</thead>
<tbody>
<row>
<entry>7.4.0</entry>
<entry>
Изменено: Теперь можно выбрасывать исключение в функции
<function>__toString</function>.
</entry>
</row>
<row>
<entry>7.4.0</entry>
<entry>
Добавлено: поддержка ограниченной ковариантности типов
возвращаемого значения и типов аргументов. Поддержка
полной вариативности производится только если
используется автозагрузка. Внутри одного файла
возможны только нециклические ссылки на типы.
</entry>
</row>
<row>
<entry>7.4.0</entry>
<entry>
Добавлено: Теперь можно задавать тип для свойств класса.
</entry>
</row>
<row>
<entry>7.3.0</entry>
<entry>
Несовместимость: распаковка аргументов для
<classname>Traversable</classname> с нецелочисленными ключами
больше не поддерживается. Такое поведение изначально не
планировалось и теперь удалено.
</entry>
</row>
<row>
<entry>7.3.0</entry>
<entry>
Несовместимость: в прошлых версиях можно было разделить
статические свойства при помощи присваивания по ссылке.
Теперь нельзя.
</entry>
</row>
<row>
<entry>7.3.0</entry>
<entry>
Изменено: теперь оператор
<link linkend="language.operators.type">instanceof</link>
допускает литералы в качестве первого операнда. В этом
случае всегда будет возвращено &false;.
</entry>
</row>
<row>
<entry>7.2.0</entry>
<entry>
Устарело: метод <function>__autoload</function> объявлен устаревшим
в пользу <function>spl_autoload_register</function>.
</entry>
</row>
<row>
<entry>7.2.0</entry>
<entry>
Изменено: для имен классов, интерфейсов и трейтов нельзя использовать слово <literal>object</literal>.
</entry>
</row>
<row>
<entry>7.2.0</entry>
<entry>
Изменено: для группового use теперь можно добавлять висящую запятую в конце списка.
</entry>
</row>
<row>
<entry>7.2.0</entry>
<entry>
Изменено: Типы параметров из переопределенных методов
и реализации интерфейсов теперь указывать не обязательно
</entry>
</row>
<row>
<entry>7.2.0</entry>
<entry>
Изменено: если один абстрактный класс наследует от другого
абстрактного класса, то он может переопределять
его абстрактные методы.
</entry>
</row>
<row>
<entry>7.1.0</entry>
<entry>
Изменено: для имен классов, интерфейсов и трейтов нельзя использовать слова: <literal>void</literal> и <literal>iterable</literal>.
</entry>
</row>
<row>
<entry>7.1.0</entry>
<entry>
Добавлено: теперь можно задавать
<link linkend="language.oop5.visiblity-constants">область видимости для констант классов</link>.
</entry>
</row>
<row>
<entry>7.0.0</entry>
<entry>
Определение одинаковых (полностью совпадающих) свойств в двух трейтах больше не вызывает ошибку.
Устарело: <link linkend="language.oop5.static">Статический</link> вызов нестатических методов.
</entry>
</row>
<row>
<entry>7.0.0</entry>
<entry>
Устарело: <link linkend="language.oop5.decon">
конструктор</link> в стиле PHP 4. Т.е. метод с именем идентичным
имени класса, в котором он объявлен.
</entry>
</row>
<row>
<entry>7.0.0</entry>
<entry>
Добавлено: групповая декларация <emphasis>use</emphasis>:
классы, функции и константы, которые надо импортировать
из одного и того же пространства имен теперь могут быть
сгруппированы в одном выражении use.
</entry>
</row>
<row>
<entry>7.0.0</entry>
<entry>
Добавлено: добавлена поддержка
<link linkend="language.oop5.anonymous">анонимных классов</link>
с помощью <literal>new class</literal>.
</entry>
</row>
<row>
<entry>7.0.0</entry>
<entry>
Несовместимость: итерирование объектов не реализующих
<classname>Traversable</classname> теперь ведет себя аналогично
итерированию массива по ссылке.
</entry>
</row>
<row>
<entry>7.0.0</entry>
<entry>
Изменено: Определение одинаковых (полностью совпадающих) свойств
в двух <link linkend="language.oop5.traits">трейтах</link> больше не вызывает ошибку.
</entry>
</row>
<row>
@ -52,7 +188,8 @@
<entry>5.4.0</entry>
<entry>
Изменено: Если <link linkend="language.oop5.abstract">абстрактный</link> класс
определяет сигнатуру для конструктора, то она будет принудительно применяться.
определяет сигнатуру для <link
linkend="language.oop5.decon">конструктора</link>, то она будет принудительно применяться.
</entry>
</row>
<row>
@ -142,7 +279,7 @@
Сейчас он вызывается в любом контексте строки (например, в
<function>printf</function> с модификатором <literal>%s</literal>), но не
в других типах контекста (например, с модификатором <literal>%d</literal>).
С PHP 5.2.0, преобразование объектов без метода <literal>__toString</literal>
С PHP 5.2.0, преобразование объектов без метода <link linkend="object.tostring">__toString</link>
в строку выдает ошибку уровня <constant>E_RECOVERABLE_ERROR</constant>.
</entry>
</row>