наш блог

В версии PHP 7.4 появятся типизированные свойства

Введение Типизированных свойств 2.0 RFC уже принято на всеобщем голосовании разработчиков PHP. В поддержку нововведения было отдано сразу семь десятков голосов. И лишь один – против. Как уточняется, чтобы утвердить предложение требовалось не менее двух третей одобрительных откликов, так как внедрение новых типизированных свойств, по сути, обернется изменением языка.

Введение скалярных и возвращаемых типов расширило возможности PHP 7. Однако программистам так и не предоставили инструментов для указания типов свойств классов. Это до сих пор вынуждает регулярно прибегать к методам геттеров и сеттеров, вместо того, чтобы использовать более удобные типы контрактов. Вместе с тем, создание лишних шаблонов попросту вредит эргономике и негативно влияет на производительность готовых веб-ресурсов. Новая версия RFC призвана преодолеть вышеупомянутые барьеры посредством внедрения поддержки для указания типов свойств первого класса.

Сейчас свойства в классе, цель которых обеспечение типобезопасности, указываются так:

Обновленная RFC позволит без жертв в типобезопасности представить этот же код в следующем виде:

И наконец, пример всех валидных типов, поддерживаемых в аннотациях принудительного выполнения для типизированных свойств:

К слову, подавляющее количество одобрительных голосов лишь подтвердило очевидные вещи. Разработчики PHP планируют и далее вносить в язык нововведения, включая те, которые напрямую относятся к типобезопасности.
 
Однако у палки, как известно, два конца. PHP так и остается динамически типизированным языком. Это и вызывает некоторое недоумение и всего один, но прогнозируемый вопрос. А именно, насколько хорошо сможет ужиться чуть менее, чем строгая типизация с динамической? В частности, трудно спрогнозировать, окажутся ли практичными нововведения, которые анонсированы в новой версии PHP 7, для динамически типизированного подхода к написанию приложений. Видимо, только время покажет.
 
Но уже вполне ясно, что в обозримом будущем язык начнет систематически избегать стилей динамического программирования, что продиктовано неумолимо растущей армией разработчиков, предпочитающих работать с наиболее строгой типизацией. Впрочем, какая-то доля программистов, которая не желает расставаться с динамическими корнями, вероятнее всего, постепенно начнет отстраняться от PHP и будет все чаще приглядываться к альтернативным языкам.