Комментарии 18
Слоники слоники, слоники....))
Наконец доку перенесли, есть места не переведены которые, либо вообще док отсутствует
Для чего вся эта мишура с трейтами и т. д?
Почему не сделать как в c++?
А про распаковку массива с ключами как именованные аргументы это уже совсем…
Кому это надо? Это потенциальное место, где будут копиться баги.
И всем разработчикам, которые хотят распаковать массив в аргументы функции, надо заботиться, чтобы ключи были не именованные, а если забыл, то могут быть случайные совпадения ключей и наименований аргументов.
Дополнительно, при рефакторинге функции/метода, надо помнить о возможных входных данных и все это учитывать.
На мой взгляд php начал развиваться в не том направлении.
Слишком много уделяется внимание всяким бесполезным штучкам.
Взять нормальный функционал у одного языка, и сделать из него елку.
Ох, простите, что люди провели исследование енамов во всех популярных языках и в свое свободное время бесплатно сделали не то, что вы ожидали.
если люди потратили время и сделали функционал, это же не значит, что функционал должен радовать всех ?
PS.: я не один ждал этого функционала, и те, кто ждал, сталкивались со сложностями, которые легко решались бы через enumerations.
и enum — нужен только для группировки набора значений и возможность принимать один из объявленных значений.
enum COLOR {
RED = 1,
GREEN,
BLUE
}
function f(COLOR $color) { echo $color; }
f(COLOR::GREEN); // print 2
f(10); // fatal error
это весь функционал, который семантически предполагает enum.
все остальное — бесполезная мишура, которая усложняет код.
Страшно представить, что будет с долгожданными дженериками.
это весь функционал, который семантически предполагает enum.
все остальное — бесполезная мишура, которая усложняет код.
В общем-то согласен, что это основное. А дополнительные плюшки — ну так про любые фичи можно сказать, что они усложняют код.
Для вдохновения взяты отличные языки (Kotlin, Swift, Rust), так что думаю в использовании будет отлично. https://github.com/Crell/enum-comparison#summary
енумы часто текстовые (натуральные ключи) С таким синтаксисом есть гарантии что значения одного типа в енумк и могут быть переданы параметром в функцию с примитивным тайпхинтом string?
Примеры:
Match Enhancement: wiki.php.net/rfc/pattern-matching#match_enhancement
State machine: wiki.php.net/rfc/enumerations_and_adts#state_machine
Maybe Monade: wiki.php.net/rfc/tagged_unions#examples
Ваш простой вариант: wiki.php.net/rfc/enumerations_and_adts#primitive-equivalent_cases
Получается очень мощные штуки, которые даже в др языках с трудом пытаются вместить
Почему не сделать как в c++?
Как в языке, который рассматривают в качестве варианта только для очень специфичных требований?
По поводу enum: я ждал этого функционала уже более 5 лет, но в результате получаем не то, что ожидали.
Для чего вся эта мишура с трейтами и т. д?
Почему не сделать как в c++?
Вы забыли указать ссылку на ваш RFC пятилетней давности.
Если вы осилили Xdebug, то вряд ли это имеет смысл
А как в наше время можно серьезно писать на PHP без Xdebug или чего-то сравнимого? Тем более, что в многих IDE его поддержка включена по умолчанию, и настройка — это не «осилил — не осилил», это где-то на уровне профпригодности на некотором среднем уровне. У нас даже джуны просят статью по настройке Xdebug и потом (объяснимо) жить без него не хотят.
Можно. Даже если осилил. но эффективней получается через логи. А может отладка нужна на удалённом сервере. где все порты закрыты и вообще кубер какой-нибудь и отладчика в образе нет.
Почему я еще так говорю — я вижу кучу локальных разработчиков с результатами, которые явственно показывают, что они не понимают, что происходит у них в коде (но проблемы видят). Спрашиваешь — «как так, ты что, ни разу не видел, что у тебя попадает в это поле?». Ответ — «нет, на всё var_dump() не повесишь» (отмазался, молодец). А потом мы удивляемся, что масса кода на PHP не выдерживает критики. Просто не надо долбить 65% стен (см. предыдущий комментарий) отверткой, это как минимум неэффективно.
PHP Дайджест № 196 (1 – 11 января 2021)