Журнал змін ОВП
Тут перераховані зміни моделі ОВП у PHP. Описи та інші примітки цих можливостей можна знайти у документації ОВП PHP.
Версия | Опис |
---|---|
8.1.0 | Додано: Підтримка модифікатора final для констант класу. Крім того, константи інтерфейсу за умовчанням стають перевизначуваними. |
8.0.0 | Додано: Підтримка оператора Nullsafe?-> для доступу до властивостей та методів об'єктів, які можуть дорівнювати null. |
7.4.0 | Змінено: Тепер можна викинути виняток у функції __toString() |
7.4.0 | Додано: підтримка обмеженої коваріантності типів значення, що повертається, і типів аргументів. Підтримка повної варіативності здійснюється лише якщо використовується автозавантаження. Усередині одного файлу можливі лише нециклічні посилання на типи. |
7.4.0 | Додано: Тепер можна встановити тип для властивостей класу. |
7.3.0 | Несумісність: розпакування аргументів для Traversable з нецілочисленними ключами більше не підтримується. Така поведінка спочатку не планувалась і тепер видалена. |
7.3.0 | Несумісність: у попередніх версіях можна було розділити статичні властивості за допомогою присвоєння за посиланням. Тепер не можна. |
7.3.0 | Змінено: тепер оператор instanceof допускає літерали як перший операнда. У цьому випадку завжди буде повернено false |
7.2.0 | Застаріло: метод __autoload() оголошено застарілим на користь spl_autoload_register() |
7.2.0 | Змінено: для імен класів, інтерфейсів та трейтів не можна використовувати слово object |
7.2.0 | Змінено: для групового use тепер можна додавати кому в кінці списку. |
7.2.0 | Змінено: Типи параметрів із перевизначених методів та реалізації інтерфейсів тепер вказувати не обов'язково |
7.2.0 | Змінено: якщо один абстрактний клас успадковує від іншого абстрактного класу, він може перевизначати його абстрактні методи. |
7.1.0 | Змінено: для імен класів, інтерфейсів та трейтів не можна використовувати слова: void иiterable |
7.1.0 | Додано: тепер можна ставити область видимості для констант класів |
7.0.0 | Застаріло: Статичний виклик нестатичних методів. |
7.0.0 | Застаріло: конструктор у стилі PHP 4. Тобто. метод з ім'ям ідентичним імені класу, у якому його оголошено. |
7.0.0 | Додано: групова декларація use: класи, функції та константи, які потрібно імпортувати з одного і того ж простору імен тепер можуть бути згруповані в одному виразі use. |
7.0.0 | Додано: додано підтримку анонімних класів за допомогою new class |
7.0.0 | Несумісність: ітерування об'єктів, що не реалізують Traversable тепер поводиться аналогічно ітерування масиву за посиланням. |
7.0.0 | Змінено: Визначення однакових (повністю збігаються) властивостей у двох трейтах більше не викликає помилки. |
5.6.0 | Додано: метод __debugInfo() |
5.5.0 | Додано: магічна константа ::class |
5.5.0 | Додано: finally в обробник винятків. |
5.4.0 | Додано: трейти |
5.4.0 | Змінено: Якщо абстрактний клас визначає сигнатуру для конструктора, вона буде примусово застосовуватися. |
5.3.3 | Змінено: Методи з тим самим ім'ям, що й останній елемент простору імен класу більше не розглядатимуться як конструктор. . Ця зміна не впливає на класи, що не використовують простори імен. |
5.3.0 | Змінено: Більше не потрібно, щоб класи, що реалізують інтерфейси з методами, які мають значення за промовчанням у прототипі, відповідали значенням за умовчанням в інтерфейсі. |
5.3.0 | Змінено: Тепер можна посилатися на клас, використовуючи змінну (наприклад, echo $classname::constant; ). Значення змінної не може бути ключовим словом (наприклад, self parent илиstatic |
5.3.0 | Змінено: Помилка E_WARNING відбувається, якщо магічні перевантажені методи оголошені як статичні. . Це також посилює вимогу, що ці методи мають бути загальнодоступними. |
5.3.0 | Змінено: До 5.3.0, виключення у функції __autoload() не могли бути перехоплені у блоці catch і призводили до фатальної помилки. Зараз винятки у функції __autoload можуть бути перехоплені в блоці catch, але з одним застереженням. Якщо перехоплюється виняток користувача, то клас, який обробляє цей виняток, повинен бути доступний. Функція __autoload може бути використана рекурсивно для автозавантаження користувача класу обробки виключення. |
5.3.0 | Додано: Метод __callStatic |
5.3.0 | Додано: Підтримка heredoc і nowdocдляконстант та визначень властивостей класу. Примітка: Значення heredoc повинні дотримуватися тих же правил, що й рядки у подвійних лапках (наприклад, без змінних усередині). |
5.3.0 | Додано: Пізніше статичне зв'язування |
5.3.0 | Додано: метод __invoke() |
5.2.0 | Змінено: Метод __toString() викликався тільки, коли він безпосередньо об'єднаний з echo або print. . Зараз він викликається у будь-якому контексті рядка (наприклад, у printf() з модифікатором %s ), але не в інших типах контексту (наприклад, з модифікатором %d ). З PHP 5.2.0, перетворення об'єктів без методу __function toString() { [native code] } у рядок видає помилку рівня E_RECOVERABLE_ERROR |
5.1.3 | Змінено: У попередніх версіях PHP 5 використання var вважалося застарілим і видавало помилку E_STRICT . . Наразі це не вважається застарілим, тому помилка більше не видається. |
5.1.0 | Змінено: Статичний метод __set_state() тепер викликається для класів, що експортуються функцією var_export() |
5.1.0 | Додані: методи __isset() і __unset() |