Comments 25
[RFC] Attributes v2 — В PHP 8 будут добавлены полноценные атрибуты (аннотации / декораторы) с синтаксисом угловых скобок << >>.
Жаль, что @ не получилась. Выглядит как то не очень.
Про дженерики поддерживаю, будет зоопарк скобок если дальше завезут, ну или придется все перепиливать. А @ как мне кажется уже знакома всем и не мазолит глаз.
Меня гораздо больше печалит, что дженерики и в эту мажорную версию не завезли.
*пока что
С другой стороны, в подавляющем большинстве (во всех) языков с ними проблема. Не только с типами, но и с синтаксисом. Давайте попробуем угадать по вызову какая из деклараций функций будет корректной?)
// Вызов
foo(new Example<A, B>($c));
// Варианты:
// 1)
function foo(Example $a) {}
// 2)
function foo(bool $a, bool $b) {}
Первый случай некорректен всегда, даже в java. (прим: некорректен не означает ошибку)
Во втором случае не могу представить, как это сработает? Прототип функции имеет 2 аргумента, а передаётся 1.
Первый случай некорректен всегда, даже в java.
Увы, пока что RFC нет, именно по-этому я в первом случае указал обобщённый тайпхинт.
Прототип функции имеет 2 аргумента, а передаётся 1.
Ну почему же? Первое — это выражение new Example < A
, а второй — выражение B > $c
. Или не так?
Увы, пока что RFC нет
Вы про какой RFC? Мы же про языки с уже добавленными дженериками говорим?
Первое — это выражение new Example < A
Ха, отличная попытка использовать пример из презентации, но нет :)
Вы про какой RFC? Мы же про языки с уже добавленными дженериками говорим?
Про PHP. RFC есть в драфте, но очень далёк от того за что можно начать голосовать: https://wiki.php.net/rfc/generics
Ха, отличная попытка использовать пример из презентации
Так как PHP дженерики (из реализации https://github.com/PHPGenerics/php-generics-rfc) синтаксически выглядят идентично джавовским, то это отличный пример того, почему с ними так всё долго. Подробнее, к слову, можно почерпнуть из ишью Никиты: https://github.com/PHPGenerics/php-generics-rfc/issues/45
но мне кажется вам не удастся написать валидный php код для второго случая
Ой ли? Я добавил всего лишь определения для каждой из используемых переменных/констант/классов, остальное оставил без изменений. Более того, подобный вопрос уже обсуждался (я не из головы брал: https://github.com/PHPGenerics/php-generics-rfc/issues/35). Ну и нотисы убрал, дабы ещё веселее выглядело.
Как говорится: Шах и мат, аметисты =)))
Since syntax is by far the most discussed point about this RFC, we also thought of an alternative by introducing a new token for attributes (T_ATTRIBUTE) defined as @: that the parser could look for. Choice of syntax will be a secondary vote on the RFC.
“The “Smiley” syntax uses the shorter, more familiar “at” symbol commonly seen in docblocks. The downside is that it does not permit whitespace in attribute names to allow detecting the ending of the declaration.”
интересно видеть как язык спотыкается об свои же архитектурные решения столетней давности — @ уже есть как оператор error suppression, в рфц это есть в последней части Criticism and Alternative Approaches.
вот так думаешь это препроцессор для хтмл, а через дцать лет оказывается уже нужны аннотации )))
интересно видеть как язык спотыкается об свои же архитектурные решения столетней давности
Рекомендую посмотреть доклад Бреслава на эту тему. Хоть и про Джаву, но проблемы те же самые. Я раза 3-4 этот доклад пересматривал, очень крутой: www.youtube.com/watch?v=HE4yyPpUsy4
[RFC] Type casting in array destructuring expressions — Отклонено.
То есть перегрузки операторов ждать не стоит?
Так еще вторичное голосование будет по поводу выбора синтаксиса @: или уже все?
PHP-Дайджест № 179 (21 апреля – 4 мая 2020)