📈sflash.biz
С нами с 03.11.12
Сообщения: 3913
Рейтинг: 4447
|
Добавлено: 11/10/17 в 17:30 |
(В конексте обьектов, без классов, образно..)
Есть некий обьект, например, - тумба (картинка\thumbnail).
Из базы взято определённое множество данных и при помощи некой фабрики создано множество однотипных этих обьектов тумб со своим личным состоянием.
1. Надо как-то поместить эти обьекты в коллекцию, что-то что может их итерировать в нужном порядке.
2. Надо всю эту коллекцию отправить на обработку, например, нарезать картинку, на которую будет ссылаться img обьекта или ещё что-то..
Сами вопросы:
1) Правильно ли я понимаю, что фабричный метод самого обьекта же тумбы должен уметь её же саму помещать в некую коллекцию? Если да, то сама коллекция - это некий сторониий статический обьект? Какой тут патерн?
2) Какой патерн наиболее уместен, чтоб обработать и уничтожить сами обьекты в определённой очерёдности? Например, коллекция умеет, как очередь отдавать и принимать обьекты? Т.е. отправить всю очередь в абстрактую дробилку и та всё раскидает как надо.
|
|
|
|
С нами с 19.05.17
Сообщения: 191
Рейтинг: 326
|
Добавлено: 11/10/17 в 18:02 |
Присоединюсь к вопросу!
Я пока создаю отдельные статические классы для коллекций, в которых наборы объектов хранятся в виде массива объектов в свойстве $collection. Собственно, эти классы и порождают объекты (прямиком из базы данных).
Если нужно ко всей коллекции применить некий метод, прогоняю коллекцию при помощи foreach и для каждого экземпляра применяю метод.
Вроде б можно и так, но постоянно терзают смутные сомнения. Дохренищща классов. А если хранить коллекцию в каждом объекте, то получится объект (и класс) охренительных размеров и вообще как-то "нелогично".
|
|
|
|
+
С нами с 09.05.17
Сообщения: 661
Рейтинг: 586
|
Добавлено: 11/10/17 в 18:14 |
ну Repository же ?
$thumbsRepository->addThumb($thumb)
$thumbsRepository->getThumb($thumbId)
$thumbsRepository->getLastByAmmount($ammount)
$thumbsRepository->getSortedByDate()
$thumbsRepository->createMiniaturesForAll()
ну и так далее...
|
|
|
|
С нами с 19.05.17
Сообщения: 191
Рейтинг: 326
|
Добавлено: 11/10/17 в 18:58 |
А если состояние объекта в репозитории зависит от состояния других объектов в другом репозитории, как правильно запросить эти объекты?
Например, размер миниатюр, находится в свойствах объекта $Tube->thumbs_width
Объекты класса Tube лежат в репозитории $tubesRepository
Получаем тумбу
$Thumb = $thumbsRepository->getThumb($thumbId);
У тумбы есть свойство $Thumb->tube_id
Через это свойство свойство мы должны добраться к объекту $Tube чтобы получить свойство $Tube->thumb_width
Как должен выглядеть метод $Thumb->getThumbWidth(); ?
|
|
|
|
+
С нами с 09.05.17
Сообщения: 661
Рейтинг: 586
|
Добавлено: 11/10/17 в 19:04 |
насколько я смог понять
$thisthumb->thumbWidth = $tubesRepository->getWidthByTubeId($Thumb->tube_id);
метод getWidthByTubeId получает объект по tube_id и возвращает свойство thumbs_width
по поводу очередей.
в repository могут быть методы отправки id необработанных объектов (isCropped=false)в очередь задач(RabbitMQ или типа того), откуда Cropper сможет брать эти id, получать объекты на обработку, кропить, апдейтить (isCropped=true), ну тут насколько фантазии хватит, например Cropper по крону может напрямую из thumbsRepository брать N объектов в работу и т.д. и т.п.
Очередь на обработку, как мне кажется, тоже в виде repository можно организовать)
queueToCropRepository->add($thumbId) ложим кладем
queueToCropRepository->get($thumbId$ammount) берем обработчиком
queueToCropRepository->remove($thumbId) удаляем после обработки
типа как то так вижу
|
|
|
|
С нами с 19.05.17
Сообщения: 191
Рейтинг: 326
|
Добавлено: 11/10/17 в 19:38 |
Oswell E. Spencer писал: | насколько я смог понять |
Дада, это, спасибо. Формат коллекциии тубов мы определяем методом, а саму коллекцию передаем как аргумент в методе объекта тумбы.
Иногда случается, что объекты зависят от объектов, а те в свою очередь от третьих, и тогда придется передавать изначально кучу коллекций, но видимо этого не избежать. Особенности архитектуры ))
|
|
|
|
Текстовая реклама в форме ответа Заголовок и до четырех строчек текста Длина текста до 350 символов Купить рекламу в этом месте! |