Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Подскажите как делать

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
vanicon
Отправлено: 08 Апреля, 2013 - 22:39:58
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010  
Откуда: Самара


Помог: 17 раз(а)




Всем привет.
Начинаю осваивать ооп, и появилась одна проблема, точнее не понимание как ее правильно решить...
И так есть 3 сущности:
1. Пользователь в системе
2. Пост пользователя
3. Лента

У сущности пользователя есть свойства (логин пароль и т.п), одно из действий написать пост.
Для этого действия я решил вынести пост в отдельную сущность (по сути это так и есть), пост можно добавить в избранное и т.п
Также есть лента, пока тока лента постов, в эту ленту передается объект поста.
В действии написать пост, сначала создается объект поста, потом он помещается в ленту..
И все нормально вроде бы, но появилась необходимость сделать как бы рассылку 1 записи в несколько лент других пользователей, исходя из ооп, можно создать несколько десятков объектов лент, и отдать им туда объект записи...

Но если так сделать то получится большое число запросов к бд, да и расход на сами объекты тоже не маленький, так что же получается что ооп там где удобно там юзаем, а там где нет то просто тупо пишем в процедурном стиле?
Или есть какой нибудь супер паттерн, который может решить эту проблему?
Или может я неправильно определил сущности?
Надеюсь проблема понятна.

Ps Извиняюсь за эту статью Улыбка


-----
Так было, так есть и так будет
 
 Top
caballero
Отправлено: 08 Апреля, 2013 - 23:11:21
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




обычно когда речь о рассылке пользователь подписывается на какие то события которые потом ему рассылаются

незачем запихивать каждому в ленту.

в любом случае никаких проблем с ООП здесь нет, тем более что рассылку вообще делают через крон а там ООП нафиг не надо.


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
vanicon
Отправлено: 08 Апреля, 2013 - 23:16:12
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010  
Откуда: Самара


Помог: 17 раз(а)




caballero пишет:
обычно когда речь о рассылке пользователь подписывается на какие то события которые потом ему рассылаются

Думаю тут это излишне, пользователь создает объект поста, и там же можно отправлять его объект в ленту.
caballero пишет:
незачем запихивать каждому в ленту.

А как тогда?
(Добавление)
То есть в этом случае, лучше реализовывать без ооп правильно я понимаю?
Не создавать объекты пользователей и т.п


-----
Так было, так есть и так будет
 
 Top
digi
Отправлено: 08 Апреля, 2013 - 23:39:20
Post Id


Посетитель


Покинул форум
Сообщений всего: 406
Дата рег-ции: Янв. 2012  


Помог: 4 раз(а)




есть ощущение, что вопрос больше не про ооп, а про архитектуру приложения в целом ;) а какой из элементов этой архитектуры будет объект, а какой массив - это уже дело техники.

что-то посоветовать можно, но чтобы ответ мог получиться более адекватное, нужно понять скилл реципиента ;) а именно, какие книги прочитал, посомтреть примеры кода, который реципиент готов показать, какими технологиями и библиотеками владеет, какие цмс-ки и фреймворки изучил внутри... и самое важное - для чего это всё ему надо? ;))))
 
 Top
caballero
Отправлено: 08 Апреля, 2013 - 23:42:15
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




Цитата:
пользователь создает объект поста, и там же можно отправлять его объект в ленту.

а смысл дублировать тот же объект по всем лентам?

Цитата:
То есть в этом случае, лучше реализовывать без ооп правильно я понимаю?
Не создавать объекты пользователей и т.п


объект пользователей как я понимаю служит не только для рассылки.
просто у некоего обекта именеюмого напрмер "рассылка" будет метод
который делает собственно рассылку или запихивает данные в Бд или еше куда. Просто метод с нужными SQL запросами. Это и есть ООП - обхект выполняет работу которая принадлежит к его логике.
(Добавление)
Цитата:
но чтобы ответ мог получиться более адекватное, нужно понять скилл реципиента

симфони он не учил - так что адекватного ответа у тебя никаким каком не получится Улыбка


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
vanicon
Отправлено: 08 Апреля, 2013 - 23:47:34
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010  
Откуда: Самара


Помог: 17 раз(а)




caballero пишет:
а смысл дублировать тот же объект по всем лентам?

Ну как бы изначально объект лента принадлежит объекту пользователь, или проще у пользователя есть лента)
И что бы разослать другим пользователям (друзьям или еще кому), как бы сначала нужно из бд воссоздать объекты этих пользователей, а потом к каждому из них применить типа $user->addLenta($post)
Понятное дело что так это очень и очень затратно, но разве это не логично с точки зрения ооп?


-----
Так было, так есть и так будет
 
 Top
caballero
Отправлено: 08 Апреля, 2013 - 23:56:30
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




Цитата:
Понятное дело что так это очень и очень затратно, но разве это не логично с точки зрения ооп?

это нелогично с точки зрения архитектуры. Тем более это касается PHP у которго нет персистентных объектов. Определенный смысл это могло бы иметь например в ява машине когда объект живет в памяти и к нему можно прикнопить другой объект.

в данном случае нет никакой необходимости добавлять объект, достаточно добавить id объекта. а когда будет формироватся лента на странице по этим id вытащатся данные с рассылки.

но лучше все таки не делать никакую ленту. Есть рассылки и есть пользователи. должна быть кросс-таблица которая связывает пользователей с рассылками. По сути подписка или список рассылки. по этой связи и вытянется вся лента (во всяком случае то что касается рассылки).

(Отредактировано автором: 08 Апреля, 2013 - 23:57:15)



-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
vanicon
Отправлено: 09 Апреля, 2013 - 00:02:06
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010  
Откуда: Самара


Помог: 17 раз(а)




caballero
Ок, буду лепить класс рассылок для пользователей, хотя тема довольно интересная...
Спасибо за разъяснение...


-----
Так было, так есть и так будет
 
 Top
caballero
Отправлено: 09 Апреля, 2013 - 00:08:01
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




сделать все подряд объектами нет смысла
в теории одно а практика это совсем другое

это как в реляционной алгебре - все знают что БД должна быть нормализована до 5 формы, но в реальности это чревато сложными много табличными запросами. Поэтому есть даже такое понятие как денормализация - когда хранятся избыточные дублирующие данные но зато запросы линейные на одну таблицу и в результате производительность больше. или например хранят предварительно вычисленные агрегации. особенно это касается mysql у которого оптимизатор уступает промышленным серверам БД

(Отредактировано автором: 09 Апреля, 2013 - 00:09:10)



-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
vanicon
Отправлено: 09 Апреля, 2013 - 00:11:05
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010  
Откуда: Самара


Помог: 17 раз(а)




caballero пишет:
это как в реляционной алгебре - все знают что БД должна быть нормализована до 5 формы, но в реальности это чревато сложными много табличными запросами. Поэтому есть даже такое понятие как денормализация - когда хранятся избыточные дублирующие данные но зато запросы ленейные на одну таблицу и в результате производительность больше. особенно это касается mysql у которого оптимизатор уступает промышленным серверам БД

Про алгебру не знаю пока еще не доучился))
А вот про денормализацию в бд знаю, например в mongo это даже считается в порядке вещей...


-----
Так было, так есть и так будет
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Объектно-ориентированное программирование »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB