Спасибо 🎉🎉🎉 Вопрос: в данном случае является ли это полиморфизмом? Просто не совсем догоняю что такое полиморфизм. У нас есть три класса, которые имплементируют один интерфейс, имеют одинаковые названия методов, но отдают разные файлы.
@BurmAlex47 минут бұрын
я честно не помню что там в уроке и на каком примере я рассказывал, но отвечу на вторую часть вопроса, - если у тебя три класса, они имплементируют один интерфейс, то да - это полиморфизм. накидаю ссылок, вдруг кому-то будет интересно Это урок про полиморфизм - kzbin.info/www/bejne/lZWUeY2Gj7h5q7s Это стрим полиморфизм - kzbin.info/www/bejne/ZqK7hGarZ8uLoZY есть еще стримы по часу и полтора, но там +\- тоже самое, думаю этих двух ссылок хватит
@pavlenkoevgeniy48366 сағат бұрын
Спасибо 🎉🎉🎉 Вопрос: в данном случае является ли это полиморфизмом? Просто не совсем догоняю что такое полиморфизм. У нас есть три класса, которые имплементируют один интерфейс, имеют одинаковые названия методов, но отдают разные файлы.
@pavlenkoevgeniy48367 сағат бұрын
Спасибо за Ваши уроки. 🎉🎉🎉 Пересматриваю записи стримов, почерпнул не очевидные фишки.
@BurmAlex46 минут бұрын
говори, какие не очевидные фишки подчерпнул 👌
@pavlenkoevgeniy4836Күн бұрын
Я невероятно благодарен Вам за Ваши уроки по тестированию!! Стало все намного понятнее. Спасибо большое!! 🎉🎉🎉
@BurmAlexКүн бұрын
благодарю, рад что делаю полезное дело
@dim-liveКүн бұрын
А можно для чайников чуть подробнее про транспорт?.. Напиши, пожалуйста, что за сервисы ты упоминал и какие можно подключать из популярных.
@BurmAlexКүн бұрын
там много разных вариантов для транспорта, чаще/популярнее всего используют AMQP для работы к примеру с RabbitMQ, не менее популярное решение использовать Redis для этого, также если проект использует много сервисов от AWS, то можно взять сервис AWS SQS. Где-то на просторах документации был раздел со списком доступных транспортов для мессенджера, но не смог найти быстро ссылку.
@dim-liveКүн бұрын
Смотрел широкими глазами. Испытал детский восторг ))) и понимание как мало я знаю по данной теме. Саша, а будет какое-то продолжение данной темы в твоих видео? Нам же еще пользователю ответить нужно.
@BurmAlexКүн бұрын
Да, мессенджеры еще будут и там много нюансов, вопрос в том что вам нужно, чтобы я сильно не уходил в те нюансы, которые вам не понадобятся
@АртурПоздняк-я9х3 күн бұрын
спасибо за видео) подскажите планируете ли вы ещё видео по данной теме?
@BurmAlex3 күн бұрын
Там можно много чего рассказать, и чтобы ваши ожидания оправдались, поделитесь что именно вас интересует 😇
@disconnect37633 күн бұрын
Супер, начинаю смотреть. Это пушка. Спасибо большое!🎉
@BurmAlex3 күн бұрын
Благодарю!
@ПростойЧеловек-к2к3 күн бұрын
Спасибо за видео. Как раз начал разбираться с messenger
@BurmAlex3 күн бұрын
видите, как здорово звезды складываются! спасибо за поддержку!
@pavlenkoevgeniy48363 күн бұрын
Огромнейшее спасибо!! Шикарный урок! 🎉🎉🎉
@BurmAlex3 күн бұрын
спасибо, рад что понравилось!
@ПавелСанзараев3 күн бұрын
Здравствуйте, Александр. Большое Вам спасибо за ваши видео. Было бы очень классно если бы Вы разобрали такой случай если в одной форме нужно обработать несколько сущностей. К примеру у пользователя может быть несколько аватаров. Надеюсь правильно донес свою мысль)
@BurmAlex3 күн бұрын
Спасибо за поддержку, если я правильно понял, речь идет про сохранение формы со связями, к примеру один-ко-многим (один юзер -> много аватаров). Такой запрос уже был, постараюсь в ближайшее время сделать, уже забыл про такой запрос
@ПавелСанзараев3 күн бұрын
@@BurmAlex да, всё верно)
@pavlenkoevgeniy48364 күн бұрын
Еще раз спасибо за Ваши уроки. Недавно я пошел по второму кругу, чтобы лучше все запомнить. Как и в первый раз, повторяю за Вами все своими руками. У меня новая просьба - если это возможно, сделайте пожалуйста урок по тому, как работать с importmap. Не совсем понимаю как с ним работать.
@BurmAlex3 күн бұрын
если честно, сам с ним не работаю, но сделать ролик разобрать - почему бы и нет.
@disconnect37635 күн бұрын
Саша твой контент лучший! Спасибо тебе большое!
@BurmAlex4 күн бұрын
спасибо!
@pavlenkoevgeniy48365 күн бұрын
Огромнейшее спасибо!! 🎉🎉🎉
@BurmAlex4 күн бұрын
благодарю!
@solvex83046 күн бұрын
Здравствуйте! Везде в курсах показывают, как загрузить файлы, а вот как их выгрузить? Например, экспорт в csv определённых полей из постов за определённые даты (интервал). Как это сделать?
@BurmAlex4 күн бұрын
приветствую! видео про "скачивание" у меня было, я рассматривал на примере сервиса экспорта данных (посты из блога), правда это было в разрезе урока с ученицей, это все та же серия видео, которая выходит по четвергам. сейчас вам доступно 9 серий, а этот вопрос мы с ней затрагивали в 14й, но я дам вам прямую ссылку, можете посмотреть. kzbin.info/www/bejne/qKWUZGRqaZqteqc конкретно то, что вас интересует на 5:50 минуте этого видео.
@solvex83044 күн бұрын
@@BurmAlex Спасибо, это то, что нужно! Но я сделал немного по-другому. Через js из шаблона запрос на роут контроллера, а в ответ ссылка на файл, который отдаёт тоже js. Это я подсмотрел такое решение, немного подправил js, хотя в нём я почти 0. А теперь буду знать и как из контроллера напрямую отдавать файл.
@BurmAlex4 күн бұрын
решение имеет право на жизнь, НО! если вам надо отдать ссылку на файл.. окей, это работает. а если вы не файл отдаете на скачивание, а контент который генерируется на-лету.. то ссылку вы уже не отдадите - это первая проблема. вторая проблема, если вы хотите контролировать процесс скачивания, а точнее кому можно\кому нельзя, и хотите проверить на авторизованного юзера, или на его права доступа.. то опять ссылка прямая на файл, этого не позволит узнать. но 100%, вариант когда файл публичный и вам просто надо дать его скачать.. то лучше отдать по прямой ссылке, минуя php/python/java/..., так что любой из вариантов имеет право на жизнь.
@solvex83044 күн бұрын
@@BurmAlex Сразу скажу, что это в админке, для внутреннего пользования. Флоу там такой: В шаблоне есть два окошка, в которых можно задать даты От и До и кнопка Скачать. Скрипт отправляет пост-запрос на роут с датами или без, если дат нет, то берутся данные за прошедший месяц. Далее выборка из бд и запись в файл, формирование ссылки и возврат json'а с этой ссылкой, которую скрипт передаёт в другой скрипт, который начинает процесс скачивания в браузере. Я, поскольку ещё не знал, как это делается, нашёл такой вариант и адаптировал его под себя.
@solvex83043 күн бұрын
@@BurmAlex Почему-то у меня файл не скачивается, а показывается в консоли в Response в виде текста, несмотря ни на _ATTACHMENT, ни на _INLINE.
@pavlenkoevgeniy48367 күн бұрын
Ваши видео уроки очень сильно мотивируют!! ❤
@BurmAlex6 күн бұрын
Важи комментарии с поддержкой, тоже :) з.ы. у меня такой вопрос, я посмотрел на некоторые видео которые еще не опубликованы, и там уже есть ваши комментарии с поддержкой. все ни как не пойму, я их вроде не выкладывал, они скрыты, но комментарии уже есть. и я не понимаю, вроде только публикую видео - смотрю, а там коммент месячной давности. Можете подсказать, как так получилось? не могу разобраться, это я их выложил и скрыл, или вы нашли как-то видео по прямым ссылкам..
@pavlenkoevgeniy48366 күн бұрын
@BurmAlex Я эти видео просмотрел уже все. Похоже что у ютуба что-то пошло не так. Там было где-то 31 видео урок. Последнее видео называлось: "Переиспользуем сервис экпорта". Никаких прямых ссылок не использовал. Просто шел по плейлисту.
@BurmAlex6 күн бұрын
@@pavlenkoevgeniy4836 да, там 31 видео в этом плейлисте, очень странно.. ну окей. главное сконцентрироваться на новых видео, а старыми разбавить - чтобы в расписание попадать
@АртурПоздняк-я9х7 күн бұрын
Спасибо за ролезную информацию
@BurmAlex6 күн бұрын
благодарю, рад что понравилось
@pavlenkoevgeniy48369 күн бұрын
Огромнейшее спасибо!! 🎉🎉🎉 Офигенный урок! Очень хорошо все объяснили! 🎉 Прошу Вас, сделайте пожалуйста урок по брокерам сообщений. Честно говоря так и не понял зачем они нужны и как их настроить. 😅 Так же вопрос - можно ли настроить авторизацию без сущности и таблицы юзер? 🧐 И если это возможно, то как можно грамотно это сделать? 😊
@BurmAlex8 күн бұрын
можно и то другое, только расскажи мне практический смысл авторизации без юзера, приведи пример задачи
@pavlenkoevgeniy48368 күн бұрын
@BurmAlex Спасибо за быстрый ответ!! Надеюсь что смогу объяснить. Вот что я имею ввиду. К примеру, будет стороннее api. И я для этого api сделаю личный кабинет. Юзеры будут храниться в базе данных в том стороннем api. И для того, чтобы авторизоваться в личном кабинете, мне в нем самом не нужно хранить юзеров в базе данных, так все данные уже есть в api. То есть Entity User будет без базы данных. Как такое грамотно сделать?
@BurmAlex8 күн бұрын
Это больше похоже на jwt/oauth/ldap/saml/..., где ваш внешний сервис выступает провайдером пользователей. можно сделать авторизацию, без привязки к юзеру, вопрос что вы с того API получаете на выходе. есть ли информация о его имени, аватаре, идентификаторе? будете ли вы эту инфу у себя отображать, банально для фразы "Welcome {name}!" Если вся инфа о юзере у вас доступна, ни что не мешает его сохранить после авторизации локально к себе, и работать как с обычным юзером. Но можно сделать кастомный аутентификатор, и лепить все что угодно. Давайте еще инфы, чтобы я глубже понял, и дал более верное решение: - ты авторизовался во внешнем АПИ - что отдает АПИ, токен? - отдает ли АПИ инфу о юзере (имя, фамилия, аватар, роль, пермишены)
@pavlenkoevgeniy48368 күн бұрын
@BurmAlex Спасибо. Вот как я это вижу. Есть страница логина, сделанная на симфони. Логинимся с логином и паролем. При логине идет запрос на api с токеном и вот этим вот логином и паролем. Если api отвечает, что такой пользователь существует, то нас пускает в админку. При этом мы в сессию сохраняем данные об этом залогиненном пользователе. Т.е. происходит авторизация, создается User. При этом в самом симфони нет базы данных с юзерерами. Вот этот момент меня интересует. Т.е. момент с security user provider без базы данных. Как мне кажется, если сами пользователи хранятся где-то на внешнем api, то хранить их еще и в базе данных в симфони не стоит. Может быть я не прав. :) Еще раз спасибо за все что вы делаете. Ваши уроки очень хорошо систематизированы и без "воды". Вы объясняете все очень просто и понятно.
@АртурПоздняк-я9х7 күн бұрын
Да, было бы очень здорово увидеть про брокеры
@dim-live9 күн бұрын
Супер тема! Жаль что для меня немножко поздно, переделаю 👍🏻
@BurmAlex9 күн бұрын
Не поздно переделать 💪
@ПростойЧеловек-к2к11 күн бұрын
Спасибо за видео. В сущности 8:04 подключен Translatable. Не могу найти, в каком видео это рассматривали?
@BurmAlex11 күн бұрын
скорее всего это от части урока с учеником, публичного видео на эту тему нет
@BurmAlex11 күн бұрын
я нашел, это было сделано для перевода слага, поскольку транслитерация слага по умолчанию не всех устраивает kzbin.info/www/bejne/eGaWdXSbj7djfNk
@ПростойЧеловек-к2к11 күн бұрын
@@BurmAlex Обзор Translatable не планируете делать? Например 2 сущности Post и PostTranslation + работа с формой
@BurmAlex10 күн бұрын
вообще не планировал, поскольку это не сильно популярная задача, хотя знаю что у многих кто пытается к ней подступиться, часто сталкиваются с проблемами, как правила из-за отсутствия опыта. ...могу в целом рассмотреть
@Успешныелюди-ф1ь10 күн бұрын
Александр, подскажите пожалуйста - а для чего эти нам возможности - для логирвоания?
@pavlenkoevgeniy483611 күн бұрын
Когда Вы объяснили - все стало ясно и понятно. ❤ Еще раз спасибо!! 😊 Не знал как подступиться к этой теме, так как не получалось запустить софтделитабл. В ларавеле софтделитабл запускается намного проще - добавляем трейт в модель и все. :) Честно говоря, симфони мне очень понравился. Но вот такие не очевидные вещи, как данная тема, заставляет понервничать :)😅
@BurmAlex11 күн бұрын
да в ларавеле выглядит проще, поскольку регистрация слушателей событий там доступна прямо из сущности. в симфони событийная система более модульная и гибкая, поэтому регистрация событий осуществляется через классы слушаетелей. это позволяет разделять логику событий от бизнес-логики сущности, что делает код более поддерживаемым и соответствует СОЛИД-ам, в частности принципу единой ответственности (сингл-респоснобилити)
@pavlenkoevgeniy483610 күн бұрын
@BurmAlex Ясно. Не задумывался над этим. Спасибо!!
@pavlenkoevgeniy483611 күн бұрын
Огромнейшее спасибо!! Хороший и качественный урок!! 🎉🎉🎉
@АртурПоздняк-я9х11 күн бұрын
спасибо, было полезно!
@BurmAlex11 күн бұрын
благодарю!
@pavlenkoevgeniy483613 күн бұрын
Александр, спасибо огромное за Ваши уроки!! Они мне очень много дали. Нижайшая просьба - сделайте пожалуйста урок по тому как правильно настроить cs-fixer в PhpStorm.
@BurmAlex11 күн бұрын
услышал
@BurmAlex10 күн бұрын
фиксер будет в среду, уже отснятый и залитый, стоит в очереди
@pavlenkoevgeniy483614 күн бұрын
Сделайте, пожалуйста, урок как по человечески сделать SoftDeleteable и TimeStampable. 🙏🙏🙏
@BurmAlex13 күн бұрын
окей
@BurmAlex11 күн бұрын
ждите уже через пару часов будет опубликовано kzbin.info/www/bejne/aIvCinufostgias
@pavlenkoevgeniy483611 күн бұрын
@@BurmAlex Спасибо!! Пока еще не загрузилось. Как появится, сразу посмотрю!!
@_nur.44415 күн бұрын
Можете сказать как быстро скачать а то у меня там 5 часов
@BurmAlex13 күн бұрын
увы там специально замедляют трафик, и за денежку снимают ограничение.. ждите, скачается
@mihail815916 күн бұрын
Спасибо!!!
@BurmAlex16 күн бұрын
это старое видео снятое еще лет 5 назад.. никогда бы не подумал что оно кому-то пригодится, хотя я сам с радостью пользуюсь воркбенчем. может имеет смысл снять обзор на более свежую версию?
@mihail815915 күн бұрын
Обязательно сделайте , вы очень хорошо обьясняете и с удовольствием буду смотреть !!!@@BurmAlex
@pavlenkoevgeniy483616 күн бұрын
Великолепно!! Спасибо большое!!🎉🎉🎉
@BurmAlex16 күн бұрын
Спасибо, рад что понравилось!
@Fronteddeveloper-dd9nu16 күн бұрын
Первый лайк
@BurmAlex16 күн бұрын
благодарочка
@disconnect376318 күн бұрын
Супер. Спасибо! Очень полезное видео.
@BurmAlex18 күн бұрын
рад, что вам было полезно!
@pavlenkoevgeniy483618 күн бұрын
Огромнейшее спасибо!!!🎉🎉🎉
@BurmAlex18 күн бұрын
спасибо за поддержку!
@dim-live21 күн бұрын
Отличный способ быстро внести исправления. Видео конечно супер! Саша, ты использовал его где-нибудь в своей практике? Данный способ подходит для редактирования только текстовых данных? А можно ли исправить дату например (без пикеров разумеется)? Если бы еще для редактровоания select и других полей придумать )))
@BurmAlex21 күн бұрын
Так далеко я бы не заходил, поскольку в реальности тебе дешевле поправить текст в шаблоне чем писать весь этот менеджмент. Задумка показать атрибут contenteditable, а как это развить.. ограничивается вашей фантазией :)
@dim-live21 күн бұрын
@@BurmAlex )) сам режим интересен из паблика исправить быстро пост какой.
@disconnect376323 күн бұрын
Ого, вот это видео. Это пушка, нереально крутое видео. Супер. Спасибо большое 👨💻🥂
@BurmAlex23 күн бұрын
Амейзинг, я знал что вам понравится!
@hoffmann64624 күн бұрын
Спасибо, было полезно для меня. Подписался, видео сохранил💪
@BurmAlex24 күн бұрын
благодарю, можете поделиться с другими ребятами, показать как аргумент не делать так в своих проектах 👌
@pavlenkoevgeniy483625 күн бұрын
Огромное спасибо!! 🎉🎉🎉
@BurmAlex24 күн бұрын
всегда рад!
@ПростойЧеловек-к2к27 күн бұрын
Где лучшего всего хранить, пользовательские настройки? Например массив с белым списком, mime type => расширение. В файле services.yaml?
@BurmAlex25 күн бұрын
честно говоря не совсем понял вопрос. для меня пользовательские настройки, это настройки конкретного пользователя (выбор языка, настройки получения новостей..), и такие вещи должны храниться к примеру в таблице связанной к юзеру, или непосредственно в таблице юзера. если я правильно вас понял, то речь идет про белый список расширений\типов файлов разрешенный для загрузки.. такие вещи могут быть в services.yaml в разделе parameters
@ПростойЧеловек-к2к25 күн бұрын
@@BurmAlex Да, речь шла про белый список расширений. Спасибо за ответ
@disconnect376329 күн бұрын
Вот это мне самый раз. Спасибо тебе огромное!
@BurmAlex29 күн бұрын
рад помочь!
@disconnect376329 күн бұрын
Супер, очень интересная тема. Спасибо большое.
@BurmAlex29 күн бұрын
не забывай писать тесты!
@pavlenkoevgeniy483629 күн бұрын
🎉🎉🎉 Спасибо!!
@BurmAlex29 күн бұрын
😇😇
@ПростойЧеловек-к2кАй бұрын
Спасибо за видео. Было бы интересно посмотреть, как работать с формой при связях ManyToMany. Планируете что-то такое?
@BurmAlexАй бұрын
это популярный запрос, у многих в начале с этим есть проблемы. у меня есть опыт в более старых версиях (симфони 5), и я еще не смотрел как это будет в 7й. скорее всего, этой темы прийдется касаться, раз вам интересно :)
@disconnect3763Ай бұрын
Регулярки это мощно. Круто. Спасибо Александр!
@BurmAlexАй бұрын
регулярки как отдельная вселенная..
@kamranloki3792Ай бұрын
мужик ты крут)) php рулит)
@BurmAlexАй бұрын
благодарю! я считаю все кто так или иначе прикасаются к программированию, уже круты. так что, ты со мной в одной лодке 🥳
@ПростойЧеловек-к2кАй бұрын
Спасибо за видео. Планируете ли снять небольшое видео про лучшие практики, соглашения в Symfony? Например в Laravel наименования таблиц должны быть во множественном числе, а в symfony я заметил, что везде указывают в единственном.
@BurmAlexАй бұрын
вообще не планировал, т.к. в большинстве случаев это все дело вкуса, если не говорить о том, что все должны по хорошему придерживаться практики PSR стандартов, я и честно говоря не помню чтобы там что-то говорилось про множественное, единственное (могу ошибаться, я тут просто не помню).
@ПростойЧеловек-к2кАй бұрын
Можно еще создать таблицу в базе данных, для примера post_image, где будет post_id (nullable), при добавлении картинки, сохраняем путь к картинке и id поста. При удалении соответственно сносим все. А мусорные картинки (например загрузили при создании поста, но пост так и не создали или по другим причинам), которые не ссылаются на какой-либо пост, удаляем в админке. У себя в проекте я сделал так.
@BurmAlexАй бұрын
в целом да, рабочий вариант. единственное что приходится чуть сложнее менеджерить сам процесс сохранения... после сабмина формы надо понять, какие картинки были загруженны именно для него
@ПростойЧеловек-к2кАй бұрын
@@BurmAlex Когда создаём новый пост, после загрузки картинки, я из сервера отправляю путь к картинке и ее id, эти id добавляю в скрытое поле формы. После отправки формы на создание поста, id этого нового поста привязываю к этим картинкам в таблице.
@BurmAlexАй бұрын
да все верно, я это понимаю, и я как раз об этом и говорю, что дополнительно приходиться менеджерить этот процесс (получить айди с бекенда, сохранить в скрытое поле, потом на беке снова их залинковать между собой)... т.е. ничего военного в этом нет, все ок, просто дополнительные манипуляции
@disconnect3763Ай бұрын
Спасибо большое. Очень хотел посмотреть в твоём объяснении про тесты.
@BurmAlexАй бұрын
спасибо!
@pekhov21Ай бұрын
#[MapRequestPayload] приятно использовать.
@BurmAlexАй бұрын
спасибо за комментарий, хотя я не понимаю его сути. в этом видео я в целом говорю про причины, почему не стоит пользоваться этими конструкциями, не важно симфони это или лара, или мажента, .. все что угодно. причем тут MapRequestPayload?
@pekhov21Ай бұрын
@@BurmAlex В контексте фреймворка symfony, валидация POST запроса через маппинг на Dto и валидацией Assert Что бы isset empty не писать. Комментарий написал только потому в IDE symfony был, все.
@BurmAlexАй бұрын
в целом, да вы правы.. если рассматривать проблему с точки зрения принятия значений извне, то DTO с его маппингом реквестов - то что надо, и решает кучу проблем
@pavlenkoevgeniy4836Ай бұрын
Огромнейшее человеческое спасибо!! 🎉
@BurmAlexАй бұрын
двигаемся дальше!
@ПростойЧеловек-к2кАй бұрын
Как Symfony понял, что нужно вызывать именно App\EventListener\PaginatorSubscriber? Этот класс нигде в настройках не нужно регистрировать?
@BurmAlexАй бұрын
у этого класса прописан метод, в котором указано на какое событие подписывается данный класс. и при срабатывании события "knp_pager.items" симфони вызывает все классы, которые на него подписаны, в том числе и наш public static function getSubscribedEvents(): array { return [ 'knp_pager.items' => ['items', 1], ]; }
@ПростойЧеловек-к2кАй бұрын
Очень хорошая подача материала. Чётко, без воды. Большое спасибо. Будет ли видео, как написать авторизацию и аутентификацию в Symfony своими руками? Данный способ очень удобен, но всё таки, надо понимать как всё работает изнутри.