трудности с ooп

grigori

( ͡° ͜ʖ ͡°)
Команда форума
x-yuri
я университетов не кончал, названия паттернов не знаю, теоретические споры вести не смогу.

По сути.
У ТС есть один класс, в поле которого накапливается лог.
Возможно, есть и другие поля.
Если ты режешь класс на части, вызывая нужный класс через эвал (называя весчи своими именами), они должны будут менять общие поля.
Надо делать эти поля или статическими полями класса, или ссылками.

Я имею опыт: дебаг подобной конструкции через год чтобы понять, кто именно и в какой момент испортил данные в общем поле, напоминает детективный сериал с плохим сценарием - уже тошнит, но цепочка вызовов никак не заканчивается.
 

A1x

Новичок
Автор оригинала: grigori
x-yuri
я университетов не кончал, названия паттернов не знаю, теоретические споры вести не смогу.
я заканчивал, про патерны нам ничего не рассказывали (специальность наверно немного не та)
книжку про паттерны купил пару месяцев назад, после нескольких лет программирования от фонаря читается почти как детектив... рекомендую
 

tf

крылья рулят
Если это что-то вроде тегированного кеша
нет нет. это настройка кеша (удаление группы тегов, удаление файлов по крону), за само кеширование отвечают другие классы
xml для конфигурации вполне подходит
 

x-yuri

Новичок
Если ты режешь класс на части, вызывая нужный класс через эвал (называя весчи своими именами), они должны будут менять общие поля.
понятно. Да, это плохое решение, потому что много классов разделяют одну обязанность - изменение общих полей. Но в данном случае можно не использовать общие поля: создать под каждый case по классу с методом, который будет возвращать список, который нужно будет добавить в журнал. А не изменять общее поле.

Но только я бы так не делал в данном случае. Как по мне, так весь этот код в одном классе нормально себя чувствует. Но если хочется, можно создать отдельный класс для хранения списка (addLog, save, deleteAll, deleteTag, deletePage, deleteUrl). Выносить метод update имеет смысл потому, что это фактически настройки класса, т.е. чтобы настройки не мешались с кодом. Вынос через наследование - самый простой вариант решения этого вопроса
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
A1x
ух ты, респект, вот это да! вот бы мне так в моей деревне ...

x-yuri
все-таки я за более глубокий рефакторинг, прослойки вроде deleteTag тут излишни
 

AmdY

Пью пиво
Команда форума
забавно получается, глухой должен услышать что говорит немой.
это у модели Catalog должен быть метод updateCache, а не наоборот.
 

tf

крылья рулят
я не считаю правильным их связывать
PHP:
class product_edit_db extends driver_db_edit {
    public function updateData($send) {
        cmfRegister::updateCache('product', $this->getId());
    }    
}

class product_attach_product_db extends driver_db_list_product_attach {
    public function updateData($send) {
        cmfRegister::updateCache('product', $this->getId());
    }  
}
 

AmdY

Пью пиво
Команда форума
как всё сложно.
ты бы создал класс product в который через плагины можно подключать edit и list, а не наоборот, тогда бы всё крутилось в одном месте.
 

Adelf

Administrator
Команда форума
конечный вариант с xml можно будет посмотреть?
 

tf

крылья рулят
а смысл туда набивать list edit section attach image param и comment?
и какой у него должен быть функционал?

напишу если так надо, но это на следующей недели, но зачем?
 

Adelf

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

tf

крылья рулят
считай будет один большой цикл и
у удаление тегов, удаление блоков, и удаление страниц по урлу
это типо пока

-~{}~ 18.08.09 01:57:

это у модели Catalog должен быть метод updateCache, а не наоборот.
у меня похоже нет ни одной модели на проект
если куча плагинов, зачатки модели может и есть, но только для каталога
 

AmdY

Пью пиво
Команда форума
жаль, полноценная модель, реализующая логику домена, разбирающая все зависимости, роботу с файлами и т.д. ускоряет разработку и качество в разы.
 

tf

крылья рулят
полноценная модель, реализующая логику домена, разбирающая все зависимости, роботу с файлами и т.д.
пример покажи)
у меня всем этим занимаются модули, и о каких файлах ты имееш введу, формы?
модули разеделы на слои (похоже сейчас я их плагинами называю) news_part_edit_controller (занимается связами), news_part_edit_modul, news_part_edit_db (обновлениями, предоставление данных)

но некоторая логика, обновление меню каталога, сложенных адресов страниц (товар каталог), почему то вынесена в другое место и вызывается из статической библиотеки классов
наверное ее стоит перенести в слов базы, а то как-то путаница получается, какую то статическую библиотеку из 2 функций хочется написать
 
Сверху