Comments 12
[RFC] Object Initializer
Судя по голосованию, его не приняли. Хотя синтаксис интересный.
Синтаксис прямиком из C#
А теперь предлагаю посмотреть на код какого-нибудь JavaScript и количество вызовов структур вида {key: value}
. В PHP аналогичным способом используются массивы ['key' => $val]
.
Единственное отличие от описанных выше структур — это добавление типизации. Т.е. связь этих аморфных структур с классом. Т.е. не будет никаких аморфных километровых массивов, а набор строго определённых структур.
Так что, имхо, принятие этого RFC создало бы эффект разорвавшейся бомбы для типизации DTO, настолько подобной конструкции не хватает в языке и настолько она нужна.
P.S. В качестве альтернативной реализации можно было бы реализовать каст к классам, вроде:
class ExampleClass
{
public string $key;
}
$object = (ExampleClass)['key' => $val];
как раз в ПХП этого существенно меньше чем в ЖС.
Я склоняюсь к тому, что не используется как раз потому, что зная о недостатках отсутствия типизации массивов — разработчики стараются избегать этих подходов. Ну а про JS даже говорить нечего, там кроме TypeORM по-моему вообще нет кода, который можно назвать качественным, так что они и не заморачиваются.
так давайте решать главную проблему — слабый (и уже устаревший) механизм типизации а не выискивать какие-то крайние случаи.
Эм. А тут я не понял высказывания. Типизация — это типа уже не модно и нужно завозить какие-нибудь алгебраические типы? Или вообще о чём речь? Где устарело?
очень круто что есть список ближайщих событий!
PHP-Дайджест № 165 (23 сентября – 7 октября 2019)