PHP 8.4.0 RC4 available for testing

Журнал изменений ООП

Раздел ведёт журнал изменений ООП-модели 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().

Добавить

Примечания пользователей

Пользователи ещё не добавляли примечания для страницы
To Top