Раздел ведёт журнал изменений ООП-модели PHP. Описания и другие примечания этих функций приводит документация ООП-модели PHP.
| Версия | Описание | 
|---|---|
| 8.4.0 | Добавили: Поддержка хуков свойств. | 
| 8.4.0 | Добавили: Поддержка «Ленивых объектов». | 
| 8.1.0 | Добавили: Поддержка модификатора final для констант класса. Кроме того, константы интерфейса по умолчанию становятся переопределяемыми. | 
| 8.0.0 | Добавили: Поддержка Null-безопасного оператора ?-> для доступа к свойствам и методам объектов, которые иногда равны 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, преобразование объектов без метода __toString
       в строку выдаёт ошибку уровняE_RECOVERABLE_ERROR. | 
| 5.1.3 | Изменили: В предыдущих версиях PHP 5 использование varсчиталось устаревшим и выдавало ошибкуE_STRICT.
       Сейчас это не считается устаревшим, поэтому ошибка больше не выдаётся. | 
| 5.1.0 | Изменили: Статический метод __set_state() теперь вызывается для классов, экспортируемых функцией var_export(). | 
| 5.1.0 | Добавлены: методы __isset() и __unset(). | 
