очень был удивлен первым примером, у класса Collection есть метод each, который принимает замыкание, в которое передается объект, являющийся значением итерируемого элемента, которому можно указать тип явно, считаю это более элегантным решением. Надеюсь вы об этом в курсе.
еще вариант чтобы были подсказки в коллекции/массиве без создания отдельной коллекции /** @var User[] $users */ $users = User::all(); foreach($users as $user) // $user->... с подсказкой...
@@silentage6310 выношу в них логику по коллекциям разных ответственностей но в ролике да использовались как пример по дженерикам, ну а var это не на тему ролика
очень был удивлен вторым примером, во первых можно передать необходимый вам объект через конструктор, что более чисто и правильно, во вторых даже если вы используете app() для получения объекта, то почему вы не делаете этого внутри конструктора. в третьих в приведенных выше двух примерах получается что дженерик и не нужен вовсе.
@@CutCodeRu понял, спасибо за ответ, согласен с вами, в качестве показательного примера приведенные годятся, но считаю, что было бы более правильным явно указать (то есть просто проговорить), что в реальных проектах так конечно лучше не делать, вас наверняка смотрят много начинающих ларщиков и в целом ваш контент очень крутой, вы действительно часто приводите крутые примеры, спасибо вам за ваш контент
@@МихаилХарченко-е7м признаюсь вам все не учтешь, даже когда очень стараешься и многое становится понятно уже спустя время, ну и в особенности благодаря комментариям
так напиши аннотацию над форычом /** @var User $user */ и иде будет понимать что это за переменная. Это не костыль, а особенность языка, хочешь джаву - пиши на джаве
Благодарю за видео. Дженериков очень не хватает! Причем, формализованные дженерики были бы более понятны, чем трюки с аннотациями.
Согласен
Тоже согласен. Настоящие дженерики намного понятнее, чем эти костыли
@@CutCodeRu Подскажите пожалуйста, какой библиотекой Вы распечатывали коллекцию?
@@CutCodeRu Каким редактором IDE Вы пользуетесь?
Стоит уточнить, что теплейты добавили к коллекциям в ларавел начиная с версии 9
Вот как страдаешь, когда после C# или TypeScript приходится пилить на PHP в этом плане.
Разве в Laravel idea это не делается все автоматически?
читай название видео
очень был удивлен первым примером, у класса Collection есть метод each, который принимает замыкание, в которое передается объект, являющийся значением итерируемого элемента, которому можно указать тип явно, считаю это более элегантным решением. Надеюсь вы об этом в курсе.
Вас не по теме видео уже понесло) но за удивление и комментарий спасибо!
еще вариант чтобы были подсказки в коллекции/массиве без создания отдельной коллекции
/** @var User[] $users */
$users = User::all();
foreach($users as $user)
// $user->... с подсказкой...
Ну отдельная коллекция создается не для подсказок а вот грязь с var я стараюсь избегать
@@CutCodeRu чтото я упустил, а для чего еще?
@@silentage6310 выношу в них логику по коллекциям разных ответственностей но в ролике да использовались как пример по дженерикам, ну а var это не на тему ролика
вопрос, а как атрибуты бьются с аннотациями, потому что вроде как в пхп 8 одни заменили другие?
Атрибуты ещё сырые и не закрывают все потребности
@@vladsarosek9521 , с атрибутами там все нормально - проблема с тем что ещё не сформирован общепринятый подход к их использованию
ide-helper с этим справляется на ура
Можно ли указать несколько темплейтов класса и как к ним в таком случае обращаться?
Также по имени
@@CutCodeRu @extends/implements MultiGenericClass как-то так?
В общем ждём продолжения, тема интересная )
огонь, спасибо большое... можно еще аидео по док-блокам. я смотрю там куча возможностей с хорошей IDE
А уже было на канале, поищите
очень кстати Спасибо
🙏
правильней сказать что это дженерики шторма, а не самой пыхи, хотя видео полезное
❤🎉
👍
очень был удивлен вторым примером, во первых можно передать необходимый вам объект через конструктор, что более чисто и правильно, во вторых даже если вы используете app() для получения объекта, то почему вы не делаете этого внутри конструктора. в третьих в приведенных выше двух примерах получается что дженерик и не нужен вовсе.
Пример с app из ларавел, я просто вынес чтобы в коде фреймворка не ковырять
@@CutCodeRu понял, спасибо за ответ, согласен с вами, в качестве показательного примера приведенные годятся, но считаю, что было бы более правильным явно указать (то есть просто проговорить), что в реальных проектах так конечно лучше не делать, вас наверняка смотрят много начинающих ларщиков и в целом ваш контент очень крутой, вы действительно часто приводите крутые примеры, спасибо вам за ваш контент
@@МихаилХарченко-е7м признаюсь вам все не учтешь, даже когда очень стараешься и многое становится понятно уже спустя время, ну и в особенности благодаря комментариям
Хорошо, но мало. Слишком базово.
это не дженерики как в джава, это просто подсказки на сколько я понял.
Дженериков в php нет
@@CutCodeRu так вы и не объяснили что такое дженерики, но зато смело называете дженериками инструкции в докблоках
И сюда эти типы тащат... Блин, они и в тайпскрипте меня достали, надеялся хоть здесь спрятаться, но всё идёт в то же болото.
это вообще близко не дженерики
Какая же дичь этот ваш app()
@@kion9138 есть такое дело
Мне кажется PHP существует только из за Laravel 😂
Laravel существует только из-за PHP🤣
@@kamil19862307 Ну это само собой. Просто давно не слышал про php.
Laravel не существует, это массовое помешательство ;)
😀
@@sufir 😁👍
так напиши аннотацию над форычом /** @var User $user */ и иде будет понимать что это за переменная. Это не костыль, а особенность языка, хочешь джаву - пиши на джаве
Спасибо но речь не об этом! И устанешь писать всюду, не все любят грязь с подобными комментами
namespace app\components\Shared\Domain\Contract;
use ArrayObject;
/**
* @extends ArrayObject
*/
class ItemCollection extends ArrayObject
1. От ItemCollection наследовал типизированные коллекции. Куча оверхеда и бойлерплейта)
2. Psalm, dockblock аннотации - костыль.
Не понял в чем вопрос или претензия, поясните
@@millkiway3682 имхо, дженерики нужны, а костыли - так себе.