<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/language.oop5.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'ru',
  ),
  'this' => 
  array (
    0 => 'language.oop5.changelog.php',
    1 => 'Журнал изменений ООП',
    2 => 'Журнал изменений ООП',
  ),
  'up' => 
  array (
    0 => 'language.oop5.php',
    1 => 'Классы и объекты',
  ),
  'prev' => 
  array (
    0 => 'language.oop5.lazy-objects.php',
    1 => 'Ленивые объекты',
  ),
  'next' => 
  array (
    0 => 'language.namespaces.php',
    1 => 'Пространства имён',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'ru',
    'path' => 'language/oop5/changelog.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="language.oop5.changelog" class="sect1">
 <h2 class="title">Журнал изменений ООП</h2>
 <p class="para">
  Раздел ведёт журнал изменений ООП-модели PHP. Описания и другие примечания
  этих функций приводит документация ООП-модели PHP.
 </p>
 <p class="para">
  <table class="doctable informaltable">
   
    <thead>
     <tr>
      <th>Версия</th>
      <th>Описание</th>
     </tr>

    </thead>

    <tbody class="tbody">
     <tr>
      <td>8.4.0</td>
      <td>
       Добавили: Поддержка <a href="language.oop5.property-hooks.php" class="link">хуков свойств</a>.
      </td>
     </tr>

     <tr>
      <td>8.4.0</td>
      <td>
       Добавили: Поддержка «<a href="language.oop5.lazy-objects.php" class="link">Ленивых объектов</a>».
      </td>
     </tr>

     <tr>
      <td>8.1.0</td>
      <td>
       Добавили: Поддержка модификатора <span class="modifier">final</span> для констант класса.
       Кроме того, константы интерфейса по умолчанию становятся переопределяемыми.
      </td>
     </tr>

     <tr>
      <td>8.0.0</td>
      <td>
       Добавили: Поддержка <a href="language.oop5.basic.php#language.oop5.basic.nullsafe" class="link">Null-безопасного оператора</a>
       <em>?-&gt;</em> для доступа к свойствам и методам объектов, которые иногда равны null.
      </td>
     </tr>

     <tr>
      <td>7.4.0</td>
      <td>
       Изменили: В магическом методе <span class="function"><strong>__toString()</strong></span> теперь разрешили
       выбрасывать исключение.
      </td>
     </tr>

     <tr>
      <td>7.4.0</td>
      <td>
       Добавили: Поддержка ограниченной ковариантности типов
       возвращаемого значения и типов аргументов. Поддержка
       полной вариативности доступна только при автозагрузке. Внутри одного файла
       возможны только нециклические ссылки на типы.
      </td>
     </tr>

     <tr>
      <td>7.4.0</td>
      <td>
       Добавили: Разрешили задавать тип для свойств класса.
      </td>
     </tr>

     <tr>
      <td>7.3.0</td>
      <td>
       Несовместимость: Распаковка аргументов объектов, которые реализуют интерфейс
       <span class="classname"><a href="class.traversable.php" class="classname">Traversable</a></span>, с нецелочисленными ключами
       больше не поддерживается. Такое поведение изначально
       не планировали и теперь удалили.
      </td>
     </tr>

     <tr>
      <td>7.3.0</td>
      <td>
       Несовместимость: В прошлых версиях разрешали разделить
       статические свойства путём присваивания по ссылке.
       Теперь нельзя.
      </td>
     </tr>

     <tr>
      <td>7.3.0</td>
      <td>
       Изменили: Оператор
       <a href="language.operators.type.php" class="link">instanceof</a> теперь
       принимает литералы в первом операнде. Проверка с литералом в первом аргументе
       при каждом вызове возвращает <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong>.
      </td>
     </tr>

     <tr>
      <td>7.2.0</td>
      <td>
       Устарело: Метод <span class="function"><a href="function.autoload.php" class="function">__autoload()</a></span> устарел
       в пользу функции <span class="function"><a href="function.spl-autoload-register.php" class="function">spl_autoload_register()</a></span>.
      </td>
     </tr>

     <tr>
      <td>7.2.0</td>
      <td>
       Изменили: Нельзя называть классы, интерфейсы и трейты словом <code class="literal">object</code>.
      </td>
     </tr>

     <tr>
      <td>7.2.0</td>
      <td>
       Изменили: В конце списка группового use разрешили добавлять висящую запятую.
      </td>
     </tr>

     <tr>
      <td>7.2.0</td>
      <td>
       Изменили: Типы параметров из переопределённых методов
       и реализации интерфейсов теперь указывать не обязательно.
      </td>
     </tr>

     <tr>
      <td>7.2.0</td>
      <td>
       Изменили: Если один абстрактный класс наследует от другого
       абстрактного класса, то он может переопределять
       его абстрактные методы.
      </td>
     </tr>

     <tr>
      <td>7.1.0</td>
      <td>
       Изменили: для имён классов, интерфейсов и трейтов нельзя использовать слова: <code class="literal">void</code> и <code class="literal">iterable</code>.
      </td>
     </tr>

     <tr>
      <td>7.1.0</td>
      <td>
       Добавили: теперь можно задавать
       <a href="language.oop5.visibility.php#language.oop5.visiblity-constants" class="link">область видимости для констант классов</a>.
      </td>
     </tr>

     <tr>
      <td>7.0.0</td>
      <td>
       Устарело: <a href="language.oop5.static.php" class="link">Статический</a> вызов нестатических методов.
      </td>
     </tr>

     <tr>
      <td>7.0.0</td>
      <td>
       Устарело: <a href="language.oop5.decon.php" class="link">
       конструктор</a> в стиле PHP 4. Т.е. метод с именем идентичным
       имени класса, в котором он объявлен.
      </td>
     </tr>

     <tr>
      <td>7.0.0</td>
      <td>
       Добавили: групповая декларация <em>use</em>:
       классы, функции и константы, которые надо импортировать
       из одного и того же пространства имён теперь могут быть
       сгруппированы в одном выражении use.
      </td>
     </tr>

     <tr>
      <td>7.0.0</td>
      <td>
       Добавили: добавлена поддержка
       <a href="language.oop5.anonymous.php" class="link">анонимных классов</a>
       с помощью <code class="literal">new class</code>.
      </td>
     </tr>

     <tr>
      <td>7.0.0</td>
      <td>
       Несовместимость: итерирование объектов не реализующих
       <span class="classname"><a href="class.traversable.php" class="classname">Traversable</a></span> теперь ведёт себя аналогично
       итерированию массива по ссылке.
      </td>
     </tr>

     <tr>
      <td>7.0.0</td>
      <td>
       Изменили: Определение одинаковых (полностью совпадающих) свойств
       в двух <a href="language.oop5.traits.php" class="link">трейтах</a> больше не вызывает ошибку.
      </td>
     </tr>

     <tr>
      <td>5.6.0</td>
      <td>
       Добавили: метод <a href="language.oop5.magic.php#object.debuginfo" class="link">__debugInfo()</a>.
      </td>
     </tr>

     <tr>
      <td>5.5.0</td>
      <td>
       Добавили: магическая константа <a href="language.oop5.basic.php#language.oop5.basic.class.class" class="link">::class</a>.
      </td>
     </tr>

     <tr>
      <td>5.5.0</td>
      <td>
       Добавили: <a href="language.exceptions.php" class="link">finally</a> в обработчик исключений.
      </td>
     </tr>

     <tr>
      <td>5.4.0</td>
      <td>
       Добавили: <a href="language.oop5.traits.php" class="link">трейты</a>.
      </td>
     </tr>

     <tr>
      <td>5.4.0</td>
      <td>
       Изменили: Если <a href="language.oop5.abstract.php" class="link">абстрактный</a> класс
       определяет сигнатуру для <a href="language.oop5.decon.php" class="link">конструктора</a>, то она будет принудительно применяться.
      </td>
     </tr>

     <tr>
      <td>5.3.3</td>
      <td>
       Изменили: Методы с тем же именем, что и последний элемент
       <a href="language.namespaces.php" class="link">пространства имён</a>
       класса больше не будут рассматриваться как <a href="language.oop5.decon.php" class="link">конструктор</a>. Это изменение не влияет
       классы, не использующие пространства имён.
      </td>
     </tr>

     <tr>
      <td>5.3.0</td>
      <td>
       Изменили: Больше не требуется, чтобы классы, реализующие интерфейсы с методами,
       которые имеют значения по умолчанию в прототипе, соответствовали значениям
       по умолчанию в интерфейсе.
      </td>
     </tr>

     <tr>
      <td>5.3.0</td>
      <td>
       Изменили: Теперь стало возможным ссылаться на класс, используя переменную (например,
       <code class="literal">echo $classname::constant;</code>).
       Значение переменной не может быть ключевым словом (например, <code class="literal">self</code>,
       <code class="literal">parent</code> или <code class="literal">static</code>).
      </td>
     </tr>

     <tr>
      <td>5.3.0</td>
      <td>
       Изменили: Ошибка <strong><code><a href="errorfunc.constants.php#constant.e-warning">E_WARNING</a></code></strong> происходит, если
       магические <a href="language.oop5.overloading.php" class="link">перегруженные</a>
       методы объявлены как <a href="language.oop5.static.php" class="link">статические</a>.
       Это также усиливает требование, что эти методы должны быть общедоступными.
      </td>
     </tr>

     <tr>
      <td>5.3.0</td>
      <td>
       Изменили: До 5.3.0, исключения в функции
       <span class="function"><a href="function.autoload.php" class="function">__autoload()</a></span> не могли быть
       перехвачены в блоке <a href="language.exceptions.php" class="link">catch</a> и
       приводили к фатальной ошибке. Сейчас исключения в функции __autoload
       могут быть перехвачены в блоке <a href="language.exceptions.php" class="link">catch</a>,
       но с одной оговоркой. Если перехватывается пользовательское исключение, то класс,
       обрабатывающий это исключение, должен быть доступен. Функция __autoload может быть
       использована рекурсивно для автозагрузки пользовательского
       класса обработки исключения.
      </td>
     </tr>

     <tr>
      <td>5.3.0</td>
      <td>
       Добавили: Метод <a href="language.oop5.overloading.php" class="link">__callStatic</a>.
      </td>
     </tr>

     <tr>
      <td>5.3.0</td>
      <td>
       Добавили: Поддержка <a href="language.types.string.php#language.types.string.syntax.heredoc" class="link">heredoc</a>
       и <a href="language.types.string.php#language.types.string.syntax.nowdoc" class="link">nowdoc</a>
       для <em>констант</em> и определений свойств класса.
       Примечание: Значение heredoc должны следовать тем же правилам, что и строки в двойных кавычках
       (например, без переменных внутри).
      </td>
     </tr>

     <tr>
      <td>5.3.0</td>
      <td>
       Добавили: <a href="language.oop5.late-static-bindings.php" class="link">Позднее статическое связывание</a>.
      </td>
     </tr>

     <tr>
      <td>5.3.0</td>
      <td>
       Добавили: метод <a href="language.oop5.magic.php#object.invoke" class="link">__invoke()</a>.
      </td>
     </tr>

     <tr>
      <td>5.2.0</td>
      <td>
       Изменили: Метод <a href="language.oop5.magic.php#object.tostring" class="link">__toString()</a>
       вызывался только, когда он напрямую объединён с
       <span class="function"><a href="function.echo.php" class="function">echo</a></span> или <span class="function"><a href="function.print.php" class="function">print</a></span>.
       Сейчас он вызывается в любом контексте строки (например, в
       <span class="function"><a href="function.printf.php" class="function">printf()</a></span> с модификатором <code class="literal">%s</code>), но не
       в других типах контекста (например, с модификатором <code class="literal">%d</code>).
       С PHP 5.2.0, преобразование объектов без метода <a href="language.oop5.magic.php#object.tostring" class="link">__toString</a>
       в строку выдаёт ошибку уровня <strong><code><a href="errorfunc.constants.php#constant.e-recoverable-error">E_RECOVERABLE_ERROR</a></code></strong>.
      </td>
     </tr>

     <tr>
      <td>5.1.3</td>
      <td>
       Изменили: В предыдущих версиях PHP 5 использование <code class="literal">var</code>
       считалось устаревшим и выдавало ошибку <strong><code><a href="errorfunc.constants.php#constant.e-strict">E_STRICT</a></code></strong>.
       Сейчас это не считается устаревшим, поэтому ошибка больше не выдаётся.
      </td>
     </tr>

     <tr>
      <td>5.1.0</td>
      <td>
       Изменили: Статический метод <a href="language.oop5.magic.php#object.set-state" class="link">__set_state()</a>
       теперь вызывается для классов, экспортируемых функцией <span class="function"><a href="function.var-export.php" class="function">var_export()</a></span>.
      </td>
     </tr>

     <tr>
      <td>5.1.0</td>
      <td>
       Добавлены: методы <a href="language.oop5.overloading.php#object.isset" class="link">__isset()</a>
       и <a href="language.oop5.overloading.php#object.unset" class="link">__unset()</a>.
      </td>
     </tr>

    </tbody>
   
  </table>

 </p>
</div><?php manual_footer($setup); ?>