У меня для вас есть несколько обновленных rfc в PHP 8.3:
Типизированные константы класса
теперь, наконец-то, можно будет указывать типы констант класса:
class FooОтрицательные индексы в массивах
{
public const string A = 'a';
public const int B = 1;
public const float C = 1.1;
public const bool D = true;
public const array E = ['a', 'b'];
}
Раньше, если у вас был пустой массив, и вы добавите элемент с отрицательным индексом, а затем добавите еще один элемент, этот второй элемент всегда будет начинаться с индекса 0:
$array = [];Начиная с PHP 8.3, следующий элемент будет добавлен в index -4:
$array[-5] = 'a';
$array[] = 'b';
var_export($array);
//array (
// -5 => 'a',
// 0 => 'b',
//)
//array (Ну и напоследок спорное решение в виде атрибут #[Override]
// -5 => 'a',
// -4 => 'b',
//)
Будет использоваться, чтобы показать намерение программиста: "Я знаю, что этот метод переопределяет родительский метод. Если это когда-либо изменится, сообщите мне".
более подробно почему не все довольны этим rfc в новом посте https://sergeymukhin.com/blog/php-83-atribut-override