В PHP 8.3 появилась возможность типизации констант классов

В PHP 8.3 было выпущено обновление для серверного языка веб-скриптов. Была добавлена поддержка типизации констант классов, глубокого клонирования свойств, доступных только для чтения, а также были внесены дополнения в функции, связанные с генерацией случайных чисел.

В PHP 8.3 было выпущено обновление для серверного языка веб-скриптов. Новая версия включает несколько значимых изменений. Например, была добавлена поддержка типизации констант классов, глубокого клонирования свойств, доступных только для чтения, а также были внесены дополнения в функции, связанные с генерацией случайных чисел.

Одним из значимых изменений в PHP 8.3 стала поддержка типизированных констант классов. Теперь можно объявлять типы констант для классов, интерфейсов, черт и перечислений. Это расширение добавляет поддержку всех типов, которые поддерживает PHP, кроме void, callable и never. Типы void и callable не поддерживаются из-за некоторых проблем, обсуждаемых в RFC typed properties v2. Аналогично, тип never не применяется в контексте констант.

Другим важным изменением, внесенным в PHP 8.3, является возможность глубокого клонирования свойств с атрибутом readonly. Теперь свойства, объявленные с атрибутом readonly, могут быть изменены в рамках метода __clone. Это означает, что классы с такими свойствами могут быть повторно инициализированы во время клонирования. Кроме того, PHP 8.3 позволяет классам, объявленным с атрибутом readonly, расширять другие классы.

PHP 8.3 также включает и другие новые возможности и улучшения. В частности, был добавлен атрибут [#\Override]. Он выражает значение в коде. Если этот атрибут добавлен к методу, движок PHP будет отслеживать наличие метода с таким же именем в родительском классе или в любом из реализованных интерфейсов. Если такой метод не существует, будет выдана ошибка времени компиляции.

Кроме того, PHP 8.3 включает улучшения в линтере командной строки. Теперь этот инструмент принимает имена файлов для линтинга в качестве переменных. Это позволяет удобно проводить проверку синтаксиса и стиля кода для указанных файлов.

Кроме того, была добавлена новая функция json_validate(), которая позволяет проверить, содержит ли строка корректный JSON. Это очень удобно в случаях, когда вам нужно убедиться, что переданная вам информация является правильным JSON-объектом.

В PHP 8.2 также было добавлено новое улучшение, связанное с анонимными классами. Теперь они могут быть доступны только для чтения. Это означает, что вы можете использовать анонимные классы в своем коде, но не сможете изменять их свойства или вызывать их методы. Это может быть очень полезно, когда вам нужно создать неизменяемый объект для передачи в другие части вашего кода. Анонимные классы становятся еще более гибкими и удобными в использовании.

Ранее мы рассказывали, чем функции в React.js лучше классов

Читайте также
Angular V17: главные обновления
Angular V17: главные обновления
Angular V17: главные обновления

Вышло обновление фреймворка Angular V17: увеличение производительности, расширенные возможности, разработка с прицелом на будущее.

Разработчики Microsoft Store в новой веб-версии перешли с React на Shoelace, Lit, Vite и бэкенд на C# ASP.NET
Разработчики Microsoft Store в новой веб-версии перешли с React на Shoelace, Lit, Vite и бэкенд на C# ASP.NET
Разработчики Microsoft Store в новой веб-версии перешли с React на Shoelace, Lit, Vite и бэкенд на C# ASP.NET

У новой версии пользовательского интерфейса более простые способы поиска приложений и современный стек веб-технологий.

Вышел Spin 2.0 — обновление фреймворка Fermyon для создания приложений на WebAssembly
Вышел Spin 2.0 — обновление фреймворка Fermyon для создания приложений на WebAssembly
Вышел Spin 2.0 — обновление фреймворка Fermyon для создания приложений на WebAssembly

Фреймворк предназначен для облачных вычислений, которые собирают приложения из Wasm-компонентов, написанных на разных языках программирования. Spin 2.0 формирует базу для смены режимов между выполнением и реализацией.

Deno 1.40: будущий Temporal API и декораторы JavaScript
Deno 1.40: будущий Temporal API и декораторы JavaScript
Deno 1.40: будущий Temporal API и декораторы JavaScript

В Deno 1.40 реализовали предстоящий Temporal API JavaScript для расширенных операций с датой и временем, а также новейшее предложение декораторов JavaScript для мета- и аспектно-ориентированного программирования.