
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:14:15

Kirill
04.04.2017
11:14:16
хорошо, вспомним джаву
даже с двумя скринами
что не так - я хз

Михаил
04.04.2017
11:15:14

Aleh
04.04.2017
11:15:24

Aleksandr
04.04.2017
11:15:26

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

Kirill
04.04.2017
11:16:11
вроде как <T> срабатывает
но я точно не скажу

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

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

Aleksandr
04.04.2017
11:17:07

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

Aleh
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

Aleksandr
04.04.2017
11:17:58

Kirill
04.04.2017
11:18:27

Evgeniy
04.04.2017
11:18:42

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
нет конечно)