Тёмный

Laravel урок №25: [ Что такое Репозиторий? #1 ] 

Dmitry Afanasyev
Подписаться 26 тыс.
Просмотров 22 тыс.
50% 1

Рассмотрим в серии видео так назваемые РепозитОрии (РепозитАрии). Перед тем как приступить к их внедрению, надо дать им определение и выяснить - так что же это такое - репозитории (шаблон проектирования)
Видеокурс по изучению фреймворка Laravel (5.7.2 - 5.7.25)
#laravel #видеокурс #шаблоны_проектирования
Автор: Дмитрий Афанасьев.
Плейлист курса: goo.gl/jzfKeP
Канал: goo.gl/3gMEeU
www.donationalerts.ru/r/dmitr...
Выразить благодарность, поддержать донатом развитие канала.

Опубликовано:

 

11 фев 2019

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 74   
@DmitryAfanasyev
@DmitryAfanasyev 5 лет назад
Это ПЕРВОЕ видео про репозитории. Видео получилось излишне продолжительным и по сему пришлось его порезать на 3(!) части.
@retvain
@retvain 3 года назад
За историю отдельное спасибо)
@user-bk3zk7lr8d
@user-bk3zk7lr8d 2 года назад
3 видео "что такое репозиторий?", - это фундаментальный подход! Еще раз спасибо! Все больше понимаю какую "дичь" я писал до ваших видео :)
@johnwick8332
@johnwick8332 3 года назад
Нашлось свободное время, вернулся к Вашему курсу. Спасибо за уроки, продолжаем учиться!
@dmitryleiko2869
@dmitryleiko2869 5 лет назад
Спасибо! Все четко и понятно.)
@DmitryAfanasyev
@DmitryAfanasyev 5 лет назад
Еще 2 видео в продолжении этой темы
@DrZlad
@DrZlad 4 года назад
Спасибо огромное!
@bobpps
@bobpps 5 лет назад
Зачет!!!! Классно
@Artem-up5xw
@Artem-up5xw 4 года назад
Спасибо, супер!
@Yurich84
@Yurich84 4 года назад
Разве Eloquent это уже не уровень абстракции над базой данных? Если мы решим сменить драйвер к примеру с MySQL на PostreSQL, то разве сменяться такие методы как find, get, all, join, where? Возможно что-то поламаеться (сырые запросы, миграции, нестандартные ситуации), но репозиторый разве может помоч в даной ситуации?
@DmitryAfanasyev
@DmitryAfanasyev 4 года назад
Да, так и есть.
@DmitryAfanasyev
@DmitryAfanasyev 4 года назад
Репозиторий тут имеет иную цель.
@evgeniysergeev2708
@evgeniysergeev2708 3 года назад
Спасибо!
@OstapBrehin
@OstapBrehin 5 лет назад
Thanks!
@user-uh1rm8py7b
@user-uh1rm8py7b 5 лет назад
Спасибо
@kirillkarpin724
@kirillkarpin724 Год назад
Честно говоря так и не понял, чем удобнее после репозитория юзать where() и т.д. и чем это поможет при смене DB
@user-ri8ow3qh7l
@user-ri8ow3qh7l 2 года назад
Блин, ты такой крутой, спасибо тебе.
@Andrew-qj6rf
@Andrew-qj6rf 5 лет назад
Сказать честно, сперва не особо вкурил для чего нужны репозитории, но мне помогли примеры отсюда - vegibit.com/laravel-repository-pattern. А автору - огромное спасибо за уроки !
@aleksk9652
@aleksk9652 5 лет назад
Привет. А если допустим тебе надо выбрать из базы категории/подкатегории - сджойнить несколько таблиц - сделать меню, которое на сайте на всех страницах выводится. На нескольких видах страниц одно и то же меню. Ты же не будешь вызывать из всех контроллеров портянку запросов с where и join всякими - надо же куда-то вынести этот запрос на выборку для меню. Куда его вынести - в метод самой модели? Я думал, что репозитории и существуют для того, чтобы в них такое писать, разве нет?
@limxn3719
@limxn3719 5 лет назад
Операции чтении может быть сколько угодно, потому что они стейт приложения не модифицируют
@DmitryAfanasyev
@DmitryAfanasyev 5 лет назад
Подобные вещи будут рассмотрены в курсе. Решения есть.
@medvedvshapke
@medvedvshapke 5 лет назад
для такого случая с меню есть view composer
@Yurich84
@Yurich84 4 года назад
В Сервис провадер можно вынести, например в АппСервис провадер метод бут. типа так \View::share('var', $var);
@devnull5762
@devnull5762 Год назад
@@DmitryAfanasyev конечно есть - репозиторий)
@user-sj1it5vp5f
@user-sj1it5vp5f 5 лет назад
Приветствую Дмитрий! Если найдётся немного времени, напиши пожалуйста команды - которыми ты создал Репозитории ! Необходимо добавить в composer.json что-то ? в ветку - - dev И выполнить какую-то команду по созданию php artisan make....... ?
@DmitryAfanasyev
@DmitryAfanasyev 5 лет назад
Руками создавал... Всё в видео. Ничего не вырезано. В ларе нет команды для создания репозитория. И понятия такого нет.
@user-sj1it5vp5f
@user-sj1it5vp5f 5 лет назад
Огромное спасибо за ответ! Но вот на ГитХабе есть следующее: composer require jason-guru/laravel-make-repository --dev и команда Артисана php artisan make:repository UserRepository Так лучше не делать?
@DmitryAfanasyev
@DmitryAfanasyev 5 лет назад
Это не совсем то. Ты привел в пример некий чужеродный пакет для Ларавел. ЭТО СТОРОННИЙ ПАКЕТ. Как он работает и какие именно задачи выполняет - мне не ведомо. Ясно дело что скорее всего реализовывает паттерн Репозиторий - но какую именно интерпретацию - не знаю(и не интересно). В курсе этот пакет использоваться не будет.
@user-sj1it5vp5f
@user-sj1it5vp5f 5 лет назад
Спасибо ещё раз огромное! Всё сделал руками и всё ок, здесь главное понять суть! Реализаций репозиториев несколько, нашёл в сети разные по методу реализации, но суть у них одна - быть прослойкой между логикой и хранилищем данных (не обязательно MySQL и другие)
@romanbush5164
@romanbush5164 Год назад
если бы можно было свентить с подобия орм Eloquent , на что то вроде Django было бы круто. А то задолбало SQL запросы писать и редачить
@EdwardNorthwind
@EdwardNorthwind 4 года назад
Иногда это не от тебя зависит, заказчику просто пришло в голову пересесть с MySQL на PostgreSQL, и всё -- сиди пересаживай))))
@director74
@director74 5 лет назад
Уволили того разработчика или оставили?))
@user-nl6uj2dt2o
@user-nl6uj2dt2o 2 года назад
"а может быть ноль?!" - смешно было)
@snoopy9116
@snoopy9116 5 лет назад
Предупреждение для тех у кого память не очень), если вы решите пока просто помотреть участок где рассказывают и показывают "говнокод" и не писать его, а продолжить уже с правильным кодом, не делайте так) пишите все! Потом будет легче
@DmitryAfanasyev
@DmitryAfanasyev 5 лет назад
А ты пропускал? 😀
@snoopy9116
@snoopy9116 5 лет назад
@@DmitryAfanasyev ну так как я немного уже знаком с MVC и ларкой, то мне казалось что все очень просто, но в дальнейшем появились непонятки, и я опять убеждаюсь что пока не проделаешь сам - не запомнишь
@EugeneChe-81
@EugeneChe-81 4 года назад
10:58 ставим скорость 2х 😂
@Skalebro
@Skalebro 5 лет назад
Может выскажусь раньше времени, я еще не смотрел остальные части. У меня были ситуации, когда репозитории были излишне, например проект простой и там всего пару строк очевидных было, но это занимало время что бы зайти в каждый реп, посмотреть че же оно там делает. Но были ситуации когда были всякие сайты знакомств. Были на mysql, а потом проект вырос и перенесли сразу на Postgres и пришлось все эти репозитории перелопатить, потому что не каждый фреймворк при смене базы начинает интерпретировать команды к базе как надо в данном случае Like и ILike и такой фигни очень много, в таком варианте ты не можешь просто сменить прослойку, все равно приходится переписывать. А потом вообще решили морду сменить на JS фрейм и давай, лупи мне АПИ под всё и опять переписывать и интерпретировать в JSON.
@medvedvshapke
@medvedvshapke 5 лет назад
Для подавляющего большинства репозитории вообще оверхед, ихнужно использовать только тогда, когда точно знаешь зачем они нужны и понадобятся в дальнейшем. А если смена хранилища не потребуется, то все эти методы из видео нужно писать в модель, она для того и нужна.
@DmitryAfanasyev
@DmitryAfanasyev 5 лет назад
В модель эти методы можно писать исключительно если проект ооочень маленький. Ну прям совсем малюсенький. Иначе будут модели монсты....
@Skalebro
@Skalebro 5 лет назад
@@DmitryAfanasyevФреймворки генерят уже сразу подобные методы в моделях или есть готовые надстройки в сервис локаторах(что в принципе антипатерн, но очень удобно). + почти все используют ленивую загрузку объектов и ORM(Doctrine) тянет информацию об Entity, но не делает агрегацаию в объекты. Это я к тому, что большинство обережет сам ORM. В любом случае, спасибо большое за уроки. Я много проектов больших доделывал на Symfony. Просто я слепо следовал документации не понимая зачем эти репозитории, слежения за объектами и т.д.
@lik_ua
@lik_ua 2 года назад
паа почему не методы в модели ? в чем отличия ?
@DmitryAfanasyev
@DmitryAfanasyev 2 года назад
Не понял вопрос
@armenmarabyan7117
@armenmarabyan7117 4 года назад
Вхэре)))
@yashkevich8164
@yashkevich8164 3 года назад
Елисеевский подход или собственный?
@DmitryAfanasyev
@DmitryAfanasyev 3 года назад
Не знаком с Елисеевским подходом. Впервые слышу.
@ndiscovery
@ndiscovery 5 лет назад
Так ничего толком и не обьяснил.
@DmitryAfanasyev
@DmitryAfanasyev 5 лет назад
Это первое видео, впереди еще два... В описании же написано....
@augcat50
@augcat50 2 года назад
Что такое сэптимы? Интересное слово
@DmitryAfanasyev
@DmitryAfanasyev 2 года назад
Основная валюта Тамриэля
@augcat50
@augcat50 2 года назад
@@DmitryAfanasyev спасибо, буду знать)
@darkshaman766
@darkshaman766 5 лет назад
хуже всего когда начинающий пытается писать проект по фэншую. такой шизокод получается !!! спс за видео
@DmitryAfanasyev
@DmitryAfanasyev 4 года назад
Так он ничего плохого не написал. Не надо так остро реагировать. Ничего плохого в говнокод нет. Путь к хорошему коду лежит через тонны говнокода и никак иначе.
@SupermariobrosRU
@SupermariobrosRU 5 лет назад
Вместо репо можно использовать скоп в модели и все, любую логику прописать, модель и есть репо
@DmitryAfanasyev
@DmitryAfanasyev 5 лет назад
Очень плохая практика. Толстая модель получится (мега -жирная). В таком случае вообще всё можно в сразу в контроллере херачить - чё бы нет-то! А когда корабль начнет тонуть - уволиться к херам :DDDD
@SupermariobrosRU
@SupermariobrosRU 5 лет назад
@@DmitryAfanasyevона и так толстая из-за связей, чего уж мелочится, я все что связано с одной моделькой и куере билдером выношу в скоуп, если несколько моделей, например мудреная форма, то сервис класс
@lovelaravel1140
@lovelaravel1140 4 года назад
@@DmitryAfanasyev А репозиторий тонкий получится? Какая разница толстый репозиторий или толстая модель? Или у Вас много репозиториев к одной модели?
@DmitryAfanasyev
@DmitryAfanasyev 4 года назад
Если оставаться в базовой архитектуре проекта, то да, будет толстый (но это лучше чем толстая модель!). И если использовать модульность, то репозитории будут тонкими.
@lovelaravel1140
@lovelaravel1140 4 года назад
@@DmitryAfanasyev А почему толстый репозиторий лучше толстой модели? Какая разница в модели куча кода или в репозитории тоже куча? Может лучше посмотреть по функциональности и разбить на несколько сервисов? Как я понимаю задача - не утонуть в коде? Я посмотрел ecomerce проект bagisto, там все на модули разбито и в репозиториях нет много кода, но там и в моделях его не много. И если все перенести в модели - явно не утонешь. Проблему горы кода решает модульность и при чем здесь репозитории не понятно? А чаще всего в проектах с репозиториями - пустые модели и толстые репозитории. И в этих репозиториях утонешь точно также как и в толстых моделях, если конечно в проекте действительно очень много кода.
@digitalturkistan1857
@digitalturkistan1857 2 года назад
видео хороши в хере 😁
@MavelRoll
@MavelRoll 5 лет назад
Репозиторий довольно приличный паттерн, все будет нормально если его использовать по назначению. А проблема 1000 репозиторий в одном проекте не является проблемой самого этого паттена, скорее это проблема кривых рук тимлида проекта, который не знает что такое микросервисная архитектура.
@DmitryAfanasyev
@DmitryAfanasyev 5 лет назад
Не спеши с выводами - впереди ещё 2 видео о репозиториях.
@wolfprogrammer7586
@wolfprogrammer7586 3 месяца назад
В}{ере да?😅
@aleksandrriabenko1911
@aleksandrriabenko1911 5 лет назад
Всем привет. У одного человека подсмотрел способ получение обьекта по id. Например было: public function edit($id) { $item = $this->blogCategoryRepository->getEdit($id); if (empty($item)){ abort(404); } $categoryList = $this->blogCategoryRepository->getForComboBox(); return view('blog.admin.categories.edit', compact('item','categoryList')); } А можно этот же код написать как: public function edit(BlogCategory $category) { $item = $post; //лень было менять переменую во вьюхе с $item на $post $categoryList = $this->blogCategoryRepository->getForComboBox(); return view('blog.admin.posts.edit', compact('item','categoryList')); } Дмитрий хочется узнать ваше мнение по поводу данного способа.
@DmitryAfanasyev
@DmitryAfanasyev 5 лет назад
Да, ларавел предоставляет такую магию, скорее всего я об этом упоминал, но несколько в ином контексте. По моему мнению такой способ можно избрать - в небольших проектах когда и кода мало и логики мало и надо быстро.
@devcrghome7061
@devcrghome7061 2 года назад
Eloquent - на прямую????? Что???? Слышали за DB, и то это не напрямую "Дублирование" - Eloquent это реализация репозитория, я вот никак не могу разобраться зачем велосипед? А почему не юзать Doctrine? Так вы и на неё запихнете костыли. Да я считаю это костыль - вот где то что то услышал. Расмотрим переход на другую БД - всё изменить, полностью всё... В чем выигрышь? Замена Eloquent на Doctrine - всё переделать, тоже полностью всё. Где плюсы?
@DmitryAfanasyev
@DmitryAfanasyev 2 года назад
Высокоэмоциональный комментарий. Общий посыл не ясен. Если постараться убрать эмоции и описать вопрос только сухой логикой, будет понятнее. Так-же лучше пересмотреть все эти видосы про репозиторий и видос, один из последних, про не верное использование моделей. Тогда, вероятно, и не было бы таких эмоций. В любом случае, благодарю за мнение 🙏👍
@devcrghome7061
@devcrghome7061 2 года назад
@@DmitryAfanasyev да, вы в дальнейшем выражаете мои мысли (по крайней мере во втором, третий еще не смотрел). А эмоции - присутствуют, просто везде требование работа через репозитории, не проблема, вот только смысл лишней логики не понятен. Код должен быть максимально чистым и прозрачным, а выходит нечто монстроозное, и совершенно не поворотное (если смотреть сервисы а не сайт аля лендинг)
@murchenko99
@murchenko99 2 года назад
вхере
@DmitryAfanasyev
@DmitryAfanasyev 2 года назад
😎
@valentinkantserov8363
@valentinkantserov8363 11 месяцев назад
3 части не о чем. норм инфы тут не найдете. чел снимает видос про репозитории и даже не удосужился открыть файл с реализацией репозитория
@MrDilord
@MrDilord Год назад
Видео ни о чём, какая то вода, пол видео вообще заняло о том, что вы вероятно никогда не будете переходить на другую БД...хотя это чушь полная. Надеюсь следующие будут более информативными.
@alexanderdera1266
@alexanderdera1266 5 лет назад
Спасибо
@dmitryocheretko703
@dmitryocheretko703 4 года назад
Спасибо
Далее
Qizim 58-qism | Anons |Nimaga meni bolam o'ladi ?
00:47
Laravel Services and Repositories: 3 Example Projects
12:29
Что такое Jenkins?
7:58
Просмотров 59 тыс.
Чего ожидать от HTTP/3 + Go
51:07
Просмотров 3,1 тыс.
Eloquent or Query Builder: When to Use Which?
5:48
Просмотров 87 тыс.
Programming Fundamentals - #1 - Logic and algorithms
15:29
PHP - Любовь и Ненависть
13:09
Просмотров 13 тыс.
Qizim 58-qism | Anons |Nimaga meni bolam o'ladi ?
00:47