Раздел ведёт журнал изменений ООП-модели PHP. Описания и другие примечания этих функций приводит документация ООП-модели PHP.
Версия | Описание |
---|---|
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(). |