@prophp7

Страница 323 из 1387
Kirill
04.04.2017
11:04:35
зачем?

Evgeniy
04.04.2017
11:04:39
потому что нет generic

Kirill
04.04.2017
11:04:51
рукалицо

Evgeniy
04.04.2017
11:04:56
Collection<User>, Collection<Post>

Google
Kirill
04.04.2017
11:05:03
Collecton|User[]

Evgeniy
04.04.2017
11:05:04
как это объдинить )

Kirill
04.04.2017
11:05:10
Collection|Post[]

Evgeniy
04.04.2017
11:05:16
рука лицо

Kirill
04.04.2017
11:05:18
магия!

Evgeniy
04.04.2017
11:05:29
еще раз

давай пойдем с другой стороны

у тебя есть опыт использования generic хотя бы в java ?

Kirill
04.04.2017
11:06:14
лучше давай обратно, в пыхе их нет

Evgeniy
04.04.2017
11:06:15
чтобы понять понимаешь ли для чего используются generic

Kirill
04.04.2017
11:06:17
=)

Evgeniy
04.04.2017
11:06:20
именно

их нет это факт

Google
Kirill
04.04.2017
11:06:33
задача: тебе нужен автокомплит

Evgeniy
04.04.2017
11:06:43
возврат массива объектов это костыль и не generic

Kirill
04.04.2017
11:06:47
по коллекции однотипных <T>

блять

ой

чувак, нужен автокомплит

какие нахрен возврат массива

ты возвращаешь коллекцию

появляются методы, всё ок

Evgeniy
04.04.2017
11:07:28
ога коллекцию чего ?)

Kirill
04.04.2017
11:07:46
а теперь фигачим тупо Some[] для автокомплита итераторов

и всё

Evgeniy
04.04.2017
11:07:52
я возвращаю я привел пример коллекцию с элементами User и Post

Kirill
04.04.2017
11:08:08
Collection|User[]|Post[]

Aleksandr
04.04.2017
11:08:15
здесь будет возврат $this, у которого есть map и filter.

https://plugins.jetbrains.com/files/8477/screenshot_16012.png

Evgeniy
04.04.2017
11:08:18
| - символ или

в phpdoc

Kirill
04.04.2017
11:08:30
да

но автокомплит в шторме работает комплексно

Google
Evgeniy
04.04.2017
11:08:58
сейчас я тебе пример напишу

на pastebin

Aleh
04.04.2017
11:09:10
а есть & для типов?

правильнее было бы Collection & User[]

но тем не менее, если у коллекции есть методы аля first/last и подобные, то они все равно не будут типизированы

Kirill
04.04.2017
11:09:54




автокомплит видишь?

Это и коллекция, и методы у неё все есть, и типизация внутри итераторов

что ещё нужно-то от языка, где этого нету?

Aleh
04.04.2017
11:12:07
костыль для оч частного случая)

Михаил
04.04.2017
11:13:14
норм я набросил

Михаил
04.04.2017
11:13:17
но речь о другом

Evgeniy
04.04.2017
11:13:22
что ещё нужно-то от языка, где этого нету?
ты не понимаешь о чем я говорю

Kirill
04.04.2017
11:13:22
вариантов других нет

Evgeniy
04.04.2017
11:13:30
я знаю что их НЕТ

Kirill
04.04.2017
11:13:34
задачу опиши

цель

что нужно в итоге получить

Google
Evgeniy
04.04.2017
11:13:49
и приходится плодить отдельно объекты коллекций для каждого типа

Михаил
04.04.2017
11:14:14
представьте что вы используете внешнюю библиотеку для коллекций, и оборачиваете свой массив User[] в нее, затем куда-то передаете в другое место. Как сделать чтобы шторм понимал, что методы коллекции возвращают именно User — вот о чем речь

Aleh
04.04.2017
11:15:24
ну так именно этот пример я и привёл
нет, ты только итератор типизировал

Admin
ERROR: S client not available

Aleh
04.04.2017
11:15:39
$user = $collection->first();

Kirill
04.04.2017
11:15:55
Aleh
04.04.2017
11:16:03
$user = $collection->first();
тут без доп. коммента никак не запилить

Kirill
04.04.2017
11:16:11
$user = $collection->first();
ну это уже немного иное

вроде как <T> срабатывает

но я точно не скажу

Aleh
04.04.2017
11:16:38
с генериком проблемы бы не было

Kirill
04.04.2017
11:16:59
их на пыхе можно запросто написать

Google
Kirill
04.04.2017
11:17:15
но всё равно это не решит проблему спецификаций

Evgeniy
04.04.2017
11:17:17
вот пример

https://pastebin.com/iBZ1Duu3

Kirill
04.04.2017
11:17:25
в котором?
я там выше скрины скинул два

Evgeniy
04.04.2017
11:17:28
как надо извращаться и плодить классы Collection*

чтобы было хорошо

Kirill
04.04.2017
11:17:36
Aleh
04.04.2017
11:17:41
решит же

Kirill
04.04.2017
11:17:44
это метод, возвращающий mixed

Evgeniy
04.04.2017
11:17:46
сейчас тот же пример для java напишу где есть ущербные generic

Aleh
04.04.2017
11:17:48
Collection<User>

Aleksandr
04.04.2017
11:17:51
я там выше скрины скинул два
из скринов не ясно что какие-то конкретные классы возвращаются

Aleh
04.04.2017
11:17:54
и метод возвращает T

Kirill
04.04.2017
11:18:27
из скринов не ясно что какие-то конкретные классы возвращаются
ну там почти аналог того, что я приводил в качестве примера

Evgeniy
04.04.2017
11:18:42
Collection<User>
да именно в java так выглядит

Aleh
04.04.2017
11:18:45
/** * @generic T */ class Collection { /** * @return T */ public function first() {} }

Kirill
04.04.2017
11:18:49
а конкретнее: /** * @param string $query * @param int $limit * @return Collection|SearchResult[] */ public function getSearchResults(string $query, int $limit = 10): Collection {

Evgeniy
04.04.2017
11:18:49
причем есть несколько реализаций

Михаил
04.04.2017
11:18:53
https://github.com/phpDocumentor/fig-standards/blob/master/proposed/phpdoc.md#collections ну вот смотрите, вроде есть же такое, но в шторме не работает (по крайней мере в 2016-м)

Kirill
04.04.2017
11:19:11
Aleh
04.04.2017
11:19:17
нет конечно)

Страница 323 из 1387