@prophp7

Страница 683 из 1387
Alexander
16.10.2017
11:44:42
Покажи код, как то все абстрактно. Какие у тебя методы в родительском классе?

AlekVolsk
16.10.2017
11:44:50
ок, что тогда подразумеваешь под репозиторием

F01134H
16.10.2017
11:44:59
а что должен делать репозиторий в твоем представлении
То, что делает любое хранилище - хранить данные

еще фильтровать, упорядочивать, сортировать - при желании можно наращивать для этого функционал

Google
Alexander
16.10.2017
11:45:17


Андрэ
16.10.2017
11:45:23
Фолли, считает что реп - это просто коллекция, которая не знает, как и где хранится. Это делает кто-то другой

F01134H
16.10.2017
11:45:24
Но не получать напрямую из базы данных

Да

Patrik
16.10.2017
11:45:48
ок, ты уберешь из него запросы, что в нем останется?

F01134H
16.10.2017
11:45:56
То, что означает слово "репозиторий"?

AlekVolsk
16.10.2017
11:46:11
и как они хранятся?

F01134H
16.10.2017
11:46:21
Как ты хочешь, не?)

причем тут вообще это?

Patrik
16.10.2017
11:46:29
хранилище данных это твоя бд, работаешь ты с ней запросами, запросы вынес из репозитория, что в нем осталось?

AlekVolsk
16.10.2017
11:46:32
хранилище == бд, не?

F01134H
16.10.2017
11:46:40
Блять...

Google
F01134H
16.10.2017
11:46:53
Короче, я жду ответов тех, кто знает, что такое репозиторий

а не кто прочитал это только что в гугле

AlekVolsk
16.10.2017
11:47:12
у всех разное понятие репозитория

F01134H
16.10.2017
11:47:26
http://design-pattern.ru/patterns/repository.html

Patrik
16.10.2017
11:47:34
ты сам не можешь ответить на элементарный вопрос

F01134H
16.10.2017
11:48:08
Читайте

и вникайте

Для тех кому лень: Объекты-клиенты создают описание запроса декларативно и направляют их к объекту-репозиторию (Repository) для обработки. Объекты могут быть добавлены или удалены из репозитория, как будто они формируют простую коллекцию объектов. А код распределения данных, скрытый в объекте Repository, позаботится о соответсвующих операциях в незаметно для разработчика. В двух словах, паттерн Repository инкапсулирует объекты, представленыые в хранилище данных и операции, производимые над ними, предоставляя более объектно-ориентированное представление реальных данных. Repository также преследует цель достижения полного разделения и односторонней зависимости между уровнями области определения и распределения данных.

объекты-клиенты

Asset
16.10.2017
11:48:53
/link@yetanotherstatsbot

Yet Another Stats
16.10.2017
11:48:54
https://yasb.exileed.com/telegram/chat/1001042383571

Alexander
16.10.2017
11:49:12
Блять...
да это нормально. У тебя же базовый класс определяет что умеет репоз, а наследник реализует это каким то образом. FaqRepository -> FaqRepositoryEloquent

Андрэ
16.10.2017
11:49:49
Ну скорее не базовый класс, а интерфейс

AlekVolsk
16.10.2017
11:50:06
коротко: объект, работающий с бд непосредственно по запросу извне, но по сути интерфейс обработки данных на уровне хранилища

Андрэ
16.10.2017
11:50:21
А так да. Конкретная реализация репозитория знает как хранить/доставать данные

F01134H
16.10.2017
11:50:56
Если взять пример, то это как если бы ваш сейф сам решал, что делать с вашими деньгами

Андрэ
16.10.2017
11:51:09
PostCacheRepository, PostDatabaseRepository (имена для наглядности)

AlekVolsk
16.10.2017
11:51:12
неудачная аналогия

F01134H
16.10.2017
11:51:17
удачная

AlekVolsk
16.10.2017
11:51:20
сейф == бд

Google
F01134H
16.10.2017
11:51:25
от выборки до INSERT'ов один шаг

Patrik
16.10.2017
11:51:26
решает клиентский код что делать, сейф только предоставляет для этого методы

AlekVolsk
16.10.2017
11:51:36
репозиторий - ключ от сейфа

Patrik
16.10.2017
11:52:54
скорее не ключ, а клерк, который тебе говорит какие операции ты можешь делать с деньгами при этом самого сейфа можешь и не видеть, деньги лежат у него в левом носке

F01134H
16.10.2017
11:53:25
http://designpatternsphp.readthedocs.io/ru/latest/More/Repository/README.html

AlekVolsk
16.10.2017
11:53:42
в любом случае, клерк. владеющий ключами от сейфа

Андрэ
16.10.2017
11:53:49
И клерк сам достаёт из сейфа, а не просит посредника какого-то

F01134H
16.10.2017
11:54:10
Репа хранит данные, которые уже были получены, она не должна сама получать данные, для этого есть ОРМ

Андрэ
16.10.2017
11:54:22
http://designpatternsphp.readthedocs.io/ru/latest/More/Repository/README.html
Ты сам внимательнее почитай)

Patrik
16.10.2017
11:55:07
Репа хранит данные, которые уже были получены, она не должна сама получать данные, для этого есть ОРМ
только твой репозиторий может хранить данные где угодно, хоть в массиве, хоть в файлах и не будет никакой орм

F01134H
16.10.2017
11:55:37
ну да

стоп, нет

Patrik
16.10.2017
11:55:53
Репа хранит данные, которые уже были получены, она не должна сама получать данные, для этого есть ОРМ
то есть сам он их забирает или нет - это не ключевой момент и не требование

F01134H
16.10.2017
11:56:08
как это не ключевой момент

Patrik
16.10.2017
11:56:17
стоп, нет
если они у тебя в массиве в памяти лежат, глупо выделить этот механизм из репозитория еще в одну абстракцию

AlekVolsk
16.10.2017
11:56:17
хранилицем может быть что угодно, репа просто предоставляет интерфейс работы с ним

F01134H
16.10.2017
11:56:19
какого хрена хранилище данных само данные получает внутри себя

Андрэ
16.10.2017
11:56:23
Он может брать данные сам из хранилища, может через кого-то. Он не эту проблему решает

F01134H
16.10.2017
11:56:35
данные нужно получить, данные нужно положить в хранилище - это логично

Google
F01134H
16.10.2017
11:56:44
то что хранилище получает внутрь себя данные - это не нормально

AlekVolsk
16.10.2017
11:56:55
интерфейс может взаимодействовать с хранилищем как напрямую, так и через орм. это уже частности

F01134H
16.10.2017
11:57:19
неизвестно какие данные оно получает из базы данных, ты это не контролируешь, когда у тебя данные внутри репы забираются

Андрэ
16.10.2017
11:57:42
Реп не хранилище, это интерфейс доступа к данным. Он и не хранит ничего

F01134H
16.10.2017
11:57:50
или вы хотите сказать, репа должна еще и данные валидировать?

Patrik
16.10.2017
11:57:55
у репозитория нет состояния, он ничего не хранит

F01134H
16.10.2017
11:57:56
полученные из бд?

AlekVolsk
16.10.2017
11:58:22
задача - передать в репу запрос и получить ответ, как репа будет этот запрос обрабатывать, посредством орм или напрямую файл читать - это дело десятое

Андрэ
16.10.2017
11:58:28
Предоставляет интерфейс доступа к данным

Sergey
16.10.2017
11:58:38
если у тебя нет никакого фреймворка для мапинга, то твой репос будет сам получать данные и мапить их сам или через делегацию другим классам в контексте доктрины ты пишешь критерии для выборок, можешь взять DQL, а можешь хоть dbal коннект выдернуть и делать тоже самое через native query репос должен всегда работать только с обьектами, которые ему принадлежат. если в репосе появляются getTotalPages(), getStatistics, getMap и прочая хрень, то это уже DAO

Sergey
16.10.2017
11:59:54
Но какие-то спец методы могут же быть? GetDeferrePosts типа
если возвращается Collection<Post> или Post на выходе, то вопросов нет

Patrik
16.10.2017
11:59:57
Вот, я о том и говорю
но это частный случай, это не значит что репозиторий вообще никогда не должен сам забирать данне

F01134H
16.10.2017
12:00:11
это звезды так сошлись

Google
Андрэ
16.10.2017
12:00:32
Реп может сам брать данные из БД

AlekVolsk
16.10.2017
12:00:59
в общем, кто во что горазд ))

F01134H
16.10.2017
12:01:20
Sergey
16.10.2017
12:01:27
Реп может сам брать данные из БД
это уже детали реализации

Alexander
16.10.2017
12:01:39
в общем, кто во что горазд ))
Ну большинство сходится во мнениях.

Андрэ
16.10.2017
12:01:46
это уже детали реализации
Да. Поэтому и говорю «может» а не «должен»

AlekVolsk
16.10.2017
12:01:50
в любом случае, все зависит от задач, иногда реп просто не нужен )

Андрэ
16.10.2017
12:02:01
это уже детали реализации
Фолли именно с этим вопросом пришёл же

Sergey
16.10.2017
12:02:11
по факту важен интерфейс репоса, у которого есть четкие сигнатуры на выборки. а то как это сделано, ну такое)

хоть с файликов читай

F01134H
16.10.2017
12:02:33
да я съем свою шляпу если хоть раз в репозитории буду забирать данные из бд

Андрэ
16.10.2017
12:02:49
Не забирай, делов то)

Sergey
16.10.2017
12:02:54
покажи пример реализации хоть одного метода в репосе у тебя

Андрэ
16.10.2017
12:03:07
Только как ты получать данные будешь?

F01134H
16.10.2017
12:03:14
конкретно у меня нет репозитория, пока что не делал

Patrik
16.10.2017
12:03:36
не зацикливайся на том, что за репо может быть только бд и только какая-то РСУБД с ОРМ

F01134H
16.10.2017
12:03:38
Андрэ
16.10.2017
12:03:45
Например

Sergey
16.10.2017
12:04:27
/** * @return User[] */ public function getDataAdmin() { return $this->createQueryBuilder('u') ->where('u.roles LIKE :role') ->setParameter('role', '%ROLE_DATA_ADMIN%') ->getQuery() ->getResult(); }

вот например

F01134H
16.10.2017
12:04:38
Например
например стандартные коллекции в ларавеле - это репозиторий

Андрэ
16.10.2017
12:04:44
Нет

Страница 683 из 1387