Как стать автором
Обновить

Комментарии 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

Ха, отличная попытка использовать пример из презентации, но нет :) Example < A имеет тип boolean, в php автобоксинга нет и new bool вывалится с ошибкой. new имеет более высокий приоритет, но мне кажется вам не удастся написать валидный php код для второго случая (как минимум — переменные должны быть с $, а константы тоже в пхп хитрые)
Вы про какой 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). Ну и нотисы убрал, дабы ещё веселее выглядело.


Заголовок спойлера

image


Как говорится: Шах и мат, аметисты =)))

Вот здесь написано, что синтаксис еще будет осуджаться и есть предложение сделать через @

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
вкусно рассказывает, спасибо
и с какой целью я должен его посмотреть? чтобы с чем то смириться или поменять свою точку зрения? или перестать считать что то уродством только потому что «таков путь»? ))
Я не знаю при чём тут какой-то «путь», но доклад отвечает на все вопросы почему синтаксис именно такой (в том числе и в PHP), да и в целом показывает, что сам PHP не является исключением в плане «спотыкания о свои же архитектурные решения столетней давности».
все еще не понял зачем мне чей то доклад, если «почему синтаксис именно такой» уже было написано в рфц
[RFC] Type casting in array destructuring expressions — Отклонено.

То есть перегрузки операторов ждать не стоит?
А как эти две вещи связаны?

Спасибо.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации