В 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 лучше классов

Читайте также
Microsoft Dev Kit для Visual Studio Code стал общедоступным
Microsoft Dev Kit для Visual Studio Code стал общедоступным
Microsoft Dev Kit для Visual Studio Code стал общедоступным

Расширение C# Dev Kit включает в себя основные сервисы языка C#, помощь IntelliCode, возможности тестирования, отладки и управления проектами. Поддержка .NET MAUI и Unity сейчас находится в стадии предварительного просмотра.

Gemini 1.5: новое поколение, уже доступно в Google Ai Studio
Gemini 1.5: новое поколение, уже доступно в Google Ai Studio
Gemini 1.5: новое поколение, уже доступно в Google Ai Studio

Новое поколение чата Gemini 1.5 уже доступно в Google AI Studio

Chrome 125 beta
Chrome 125 beta
Chrome 125 beta

Релиз довольно скромный и из значимых добавляет несколько новых фич

Dev новости: Инструменты и интеграции ИИ, Pull Requests Gone Wild
Dev новости: Инструменты и интеграции ИИ, Pull Requests Gone Wild
Dev новости: Инструменты и интеграции ИИ, Pull Requests Gone Wild

На этой неделе OpenAI привлекла внимание новостями о добавлении дополнительной памяти к ChatGPT и представлении Sora, новой модели текста в видео, но разработчиков могут заинтересовать и другие объявления компании.