Перейти к содержанию

PHP Советы: различия между версиями

2199 байт добавлено ,  13:06, 22 октября 2022
Строка 30: Строка 30:
TBD
TBD
{| class="wikitable"
{| class="wikitable"
|+Полезные фичи последних версий PHP
|+Полезные фичи по обработке null значений
!Версия
!Версия
!Что добавлено
!Что добавлено
Строка 37: Строка 37:
|-
|-
|7.0
|7.0
|Null Coalescing <code>??</code>
|Null coalescing <code>??</code>
|Позволяет кратко записывать проверки на <code>null</code> в одну строчку с присвоением альтернативного значения переменной
|Позволяет кратко записывать проверки на <code>null</code> в одну строчку с присвоением альтернативного значения переменной
|Пример кода
|Пример кода
|-
|-
|7.4
|7.4
|Null Coalescing assignment  <code>??=</code>
|Null coalescing assignment  <code>??=</code>
|Позволяет выполнять присваивание в одну строчку с условием, если переменная не была до этого равна <code>null</code>
|Позволяет выполнять присваивание в одну строчку с условием, если переменная не была до этого равна <code>null</code>
|Пример кода
|Пример кода
|-
|-
|8.0
|8.0
|Nullsafe Operator <code>?-></code>
|Nullsafe operator <code>?-></code>
|В середине цепочки последовательных вызовов методов может встретиться null. В этом случае выполнение цепочки прерывается, конечное значение остается равным <code>null</code>.
|В середине цепочки последовательных вызовов методов может встретиться null. В этом случае выполнение цепочки прерывается, конечное значение остается равным <code>null</code>.
|Пример кода
|Пример кода
|}
{| class="wikitable"
|+Полезные фичи для строгой типизации
!Версия
!Что добавлено
!Краткое описание
!Примеры использования
|-
|7.4
|Typed properties
|Можно ограничить типы у свойств (полей) класса
|Пример кода
|-
|8.0
|Union types <code><nowiki>x|y</nowiki></code>
|В выражениях определяющих тип можно использовать разделить <code><nowiki>|</nowiki></code> и перечислить несколько допустимых типов. Должен подходить один из списка.
|
|-
|8.1
|Intersection Types <code>x&y</code>
|В выражениях определяющих тип можно использовать разделить <code>&</code> и перечислить несколько допустимых типов. Должны подходить все указанные.
|
|}
{| class="wikitable"
|+Полезные фичи по ООП
!Версия
!Что добавлено
!Краткое описание
!Примеры
|-
|8.0
|<code>$object::class</code>
|Теперь класс объекта можно получить без использования дополнительных функций
|
|-
|8.0
|Promoted properties
|Свойства (поля) объекта теперь можно инициализировать прямо в параметрах конструктора класса. Значения заполняются без необходимости определять присвоение в самом конструкторе.
|
|-
|8.1
|Enums
|Перечисляемый тип или другими словами — это типизированные константы
|Пример кода
|-
|8.1
|<code>readonly</code>  properties
|Признак <code>readonly</code> у свойства (поля) класса означает, что значение в него можно записать только один раз. После записи изменить значение нельзя.
|
|-
|
|
|
|
|}
|}
Анонимный участник