Apxat
типо UserCollection->add
Михаил
Да
Можно вкшный пхп юзать, вроде я там видел дженерики))
Михаил
типо UserCollection->add
а что ещё коллекция должна делать?
Apxat
да ничего не должно, просто хочу чтобы шторм понимал что получает
Apxat
без phpdocs
The Ant
а всякие велосипеды типо add, get не очень правильно ?
Это сделаешь, вот только без пхпдоков у тебя будет просто array
Apxat
я просто думал есть общепринятый способ это делать
The Ant
Общепринятый способ это пхпстан/псалм в комментариях. Или просто писать @return Foo[]
Михаил
while($userCollection->isAvailable()) { $user = $userCollection->pull(); } 🌚🌚🌚
Apxat
типо того, просто все по разному это городят
Apxat
я подумал есть общепринятый способ это делать
Михаил
я подумал есть общепринятый способ это делать
пока не придумали дженерики - phpdoc
Apxat
да вроде их и не хотят делать в рнр
Михаил
да вроде их и не хотят делать в рнр
вцелом если ты в восторге от функций высшего порядка - то сделать в коллекции методы iterate(fn (User $user) -> ...); и радоваться жизни
Михаил
или настроить шторм так чтоб он скрывал натационные комментарии - код будет визуально чище
Михаил
usort() только сегодня юзал :)
да вообще. Неопытные дебики у руля пыхи. Но важно помнить - мой кейс, это другое, я не дебик
Михаил
Съел странную печеньку и меня прёт
Apxat
да просто не нравится еще немного такая типизация, когда кучу массивов туда сюда ходит, даже с объектами внутри
Михаил
чувак занёс?
Блин, надо бы пересмотреть
Вадим
а потом тексты с телеграмма пропадают
Михаил
ОНИ ОБОССАЛИ МОЙ КОВЁР))
Apxat
ни с какого
Apxat
первый язык был с++ в универе
Юра
да вроде их и не хотят делать в рнр
Да в них нет особого смысла в случае с пхп
Юра
Будет такая же как phpdoc подсказка для иде просто
Юра
Дженкрики в основном имеют смысл в компилируемых языках чтобы сгенерировать эффективный код
Михаил
Симфони компилируемая🌚🌚🌚
Юра
Хотя в пхп есть же уже джит и он мог бы использовать информацию о дженериках чтобы сгенерировать код
Юра
Например массив интов сделать нормальным массивом интов
Юра
Но у нас уже есть джава
Михаил
А ещё чтоб это работало как типизированные параметры То есть это контракт о том, что в массив или коллекцию не попадёт то, что не нужно для данной коллекции
Михаил
Типизированные параметры по такой логике тоже не нужны были, но это контракт. И это хорошо *запил на гитаре*
Юра
Только упадет этот контракт где-то походу работы программы
Юра
Не у всех есть иде которая сможет это все сразу подсветить
Юра
Да и это очень накладно делать
Юра
Я где-то читал у джетбрейнс что у них ограниченная поддержка генерик аннотаций из-за больших накладных расходов
Юра
Хотя тайпскрипт вроде как-то работает
Юра
Но они наверное дёргают сам тайпскрипт компилятор
Михаил
Не у всех есть иде которая сможет это все сразу подсветить
Зато есть статические анализаторы - для пыхи это стандарт.
#lest
Нормально использовать брокер сообщений в монолите, раньше не юзал а в мануале приводят пример для микросервиса. Я хочу применить его для одноразовых запросов к стороннему api внутри php, я могу конечно это все внутри одного сервиса делать, но подумал может вынести и через брокер брать по очереди
Юра
Нормально
Юра
В монолитах брокеры используются так же как не в монолитах
Вадим
привет! у меня есть несколько сервисов которые работают с изображениями. Режут, ресайзят по-всякому. Используют Imagick. Imagick достаётся из контейнера. И вот у меня вопрос. Насколько плохо если я вместо того чтобы получать Imagick из контейнера буду создавать его через new?
The Ant
Тем более на пхп
The Ant
Сервисы, для изображений, которые ресайзят, режут по всякому
Вадим
Сервисы, для изображений, которые ресайзят, режут по всякому
а можешь показать парочку, я ваще в танке
Вадим
или как это гуглить
Вадим
но вопрос остаётся вопросом
Vlad
https://github.com/h2non/imaginary
Vlad
https://hub.docker.com/r/darthsim/imgproxy/
Вадим
https://github.com/h2non/imaginary
спасибо! а оно pdf умеет в jpg?
The Ant
но вопрос остаётся вопросом
https://go.libhunt.com/imaginary-alternatives Имгпрокси самый популярный. Что касается вопроса, то не надо в контейнер ложить, через Нью только. Класс имедж хранит в себе состояние, поэтому не надо. Ну или создавать на каждый запрос из контейнера.
Михаил
Да, кстати, хотел сегодня написать. Вчера докерхаб разблокировали
Вадим
https://go.libhunt.com/imaginary-alternatives Имгпрокси самый популярный. Что касается вопроса, то не надо в контейнер ложить, через Нью только. Класс имедж хранит в себе состояние, поэтому не надо. Ну или создавать на каждый запрос из контейнера.
ого там сколько всего понаделали! спасибо! за ответ спасибо, да, это состояние порядком заёбывает, и думаешь да блин контейнер для меня или я для контейнера
Михаил
Однако паранойик внутри меня всё ещё ссытся, не будут ли они как то по другому «соблюдать законы»
#lest
У меня стороння апишка, я обращаюсь к ней из php по HttpClient. Вопрос: Некоторые методы этой апишки принимают 50+ полей глубокой вдоженности, а в ответе мне нужны только 2 поля из 30 в конкретном сервисе. Мне сделать один класс и принимать все возможные параметры для этого метода апишки (будет очень много DTO с вложенностями) и валидировать все возможные ошибки, или делать отдельно изолированные запросы в каждом сервисе
#lest
Этот метод отвечает за поиск, я могу передать и одно поле и несколько, то остальные можно не передавать и мне делать условие если есть значение в поле данного дто то добавить в тело запроса учитывая ещё вложенность запроса
#lest
Я могу скинуть документацию
Вадим
я делал классы - экшоны, на каждый запрос в апишку свой экшон
#lest
Может подскажите как лучше)
Вадим
ты лучше проблему свою описывай понятнее, с запятыми и остальными знаками препинания
Вадим
а, понял. Всё равно я бы сделал простые экшоны каждый под задачу твоего бизнеса, а не класс под чью-то апишку.
#lest
А если некоторые запросы могут встречаться в других сервисах в слегка изменённом виде или в таком же, то все равно делать изолированно?
#lest
Понял, спасибо за помощь
Юра
Там нет swagger или какой-то схемы? А то можно было бы сгенерировать клиент
Юра
Иногда быстрее написать свой генератор чем вручную делать
Юра
Но если вам не нужны поля те все то можно их же не передавать просто и все
Павел
привет! у меня есть несколько сервисов которые работают с изображениями. Режут, ресайзят по-всякому. Используют Imagick. Imagick достаётся из контейнера. И вот у меня вопрос. Насколько плохо если я вместо того чтобы получать Imagick из контейнера буду создавать его через new?
Плохо вообще работать с имейджиком напрямую бизнесовом кодом, сделайте свою обертку над имейджиком и используйте ее. Тогда уже пофиг как вы юзеаете имейджик и имейджик ли вообще