Size: a a a

2020 July 27

A

Aleksandr Khristenko in PHP
Код с генериками можно переписать без них чтобы он продолжил тайпчекатся. Путем огромного бойлерплейта.
источник

BT

Bohdan Turchyk in PHP
есть допустим кастомная мапа ключ-значение
Map<K, V>

у мапы есть метод FilterKeys(K[] keys): Map<K, V>

как ты опишешь это на пхп с интерфейсами?
источник

BT

Bohdan Turchyk in PHP
при этом ключом мапы может быть все, что угодно
и значением тоже
и я хочу, чтобы у меня мой код гарантировал, что если у меня Map<string, int>, то я не закину туда пару object, object
источник

АГ

Алексей Гевондян... in PHP
вот я и говорю, что не хватает синтаксиса K[] и все. а Map<K,V> уже не обязателен. без SPL можно жить. но в теории может это и может быть надо, но пока бы просто K[] завести, уже 95% задач бы решилось
источник

BT

Bohdan Turchyk in PHP
Алексей Гевондян
вот я и говорю, что не хватает синтаксиса K[] и все. а Map<K,V> уже не обязателен. без SPL можно жить. но в теории может это и может быть надо, но пока бы просто K[] завести, уже 95% задач бы решилось
это не ответ на мой вопрос.
источник

A

Aleksandr Khristenko in PHP
Bohdan Turchyk
это не ответ на мой вопрос.
Он еще на мой не ответил =\
источник

BT

Bohdan Turchyk in PHP
пускай там даже будет другой метод (юзлесс, но пофиг)

GetSingleValueMap(K key): Map<K, V>
источник

BT

Bohdan Turchyk in PHP
чтобы ты не цеплялся за K[]
источник

АГ

Алексей Гевондян... in PHP
крч нужны Traversable<ItemType>, Iterator<ItemType>, Assoc<ItemType>, Generator<ItemType> и т п. т.к. Some[] это лишь узкий класс неассоциативных массивов объектов класса / интерфейса
источник

АГ

Алексей Гевондян... in PHP
Если принять Some[] как обозначение Traversable<Some>, т.е. чтобы можно было использовать и в итераторах, и в генераторах, и прочее - то уже было бы получше... но это конечно такое все... неудачный подход наверное предлагаю
источник

BT

Bohdan Turchyk in PHP
ты все еще предлагаешь дженерики, но ограниченные
источник

VS

Vlad Sobenko in PHP
Ещё пример, где дженерик поможет решить проблему бойлерплейта - в репозиториях.:
источник

VS

Vlad Sobenko in PHP
Да и вообще с ними будет намного меньше бойлерплейта
источник

VS

Vyacheslav Startsev in PHP
навряд ли дженерики появятся в ближайшем будущем в PHP
для интерпретируемого языка это будет снижение производительности
а оно того стОит?

вот Никита Попов делал наброски по дженерикам, где указал, что есть проблемы с их реализацией
https://github.com/PHPGenerics/php-generics-rfc/issues/45

юзайте psalm, включив его проверку в CI
вполне хватает
источник

VS

Vlad Sobenko in PHP
Vyacheslav Startsev
навряд ли дженерики появятся в ближайшем будущем в PHP
для интерпретируемого языка это будет снижение производительности
а оно того стОит?

вот Никита Попов делал наброски по дженерикам, где указал, что есть проблемы с их реализацией
https://github.com/PHPGenerics/php-generics-rfc/issues/45

юзайте psalm, включив его проверку в CI
вполне хватает
Мне было бы достаточно поддержки psalm в phpstorm. Вроде же в 2020.3 завезут. Будет круто)
источник

VS

Vyacheslav Startsev in PHP
да, был анонс
источник

A

Aleksandr Khristenko in PHP
Vlad Sobenko
Мне было бы достаточно поддержки psalm в phpstorm. Вроде же в 2020.3 завезут. Будет круто)
А если посмотреть внимательнее то они обещают просто вывод ошибок псалма внутри пхп. А чтобы сам шторм понимал псалмовские типы это может попозже.
источник

VS

Vlad Sobenko in PHP
Aleksandr Khristenko
А если посмотреть внимательнее то они обещают просто вывод ошибок псалма внутри пхп. А чтобы сам шторм понимал псалмовские типы это может попозже.
Я одним глазом увидел такое обещание, значит не правильно понял. Нужна как раз поддержка при инспекции.. Жаль..
источник

VS

Vlad Sobenko in PHP
Алексей Гевондян
Если принять Some[] как обозначение Traversable<Some>, т.е. чтобы можно было использовать и в итераторах, и в генераторах, и прочее - то уже было бы получше... но это конечно такое все... неудачный подход наверное предлагаю
Может всё таки полноценные дженерики? Или нужно делать, что только для тебя достаточно?
источник

АГ

Алексей Гевондян... in PHP
они не очень то и нужны +  с ними проблема с производительностью и трудно реализовывать.
источник