Количество методов в классе, количество строк.

MiksIr

miksir@home:~$
тут grigori недавно говорил как он делает, начинает валидацию с крайней связанной модели ну и соотвественно сохраняет также плюс все в одной транзакции насколько я понял.
Тут скорее вопрос тупо "а кде это писать". Если в контроллере - получаем проблемы с повторным использованием. Вот я с этой точки на эти "хелперы" и смотрю.
Actions - это вот как раз по теме.
Почти, но в общем у меня был теоретический вопрос, как это построить в случае DI. Yii тут плохой пример, я его в общем знаю более-менее =)
 

MiksIr

miksir@home:~$
Ну ведь foreign key же используешь?

А если и правда в транзакции делать, то вообще ничего страшного не случится.
FK - это другое. Например, человек нажимает +1, нужно обновить счетчик и сделать запись в логе в базе.. или обновить десять счетчиков. И про транзакцию понятно. Просто где писать то эти деcять find // +1 // save() да еще обернутые в транзакцию? Ясно, что самый примитивный вариант - в контроллере. А если это действие нужно в двух разных контроллерах?
 

Ragazzo

TDD interested
MiksIr
Дак предложили, вынести в одну модель, которая будет другими управлять тоже, вызываешь в ней save() а в нем остальные save() связанных моделей м?
 

caballero

Новичок
Поэтому в AR YII есть afterSave()
он есть для выолнения лдействий после изменения данных аудита например не обязательно изменение другой модели
. Как научитесь не троллить категориями sux/rulez, а обосновывать свое мнение на пальцах и с примерами,
именно это я и делаю
что бы "даже убогие PHP-ники поняли", тогда, может, вас начнут слушать и как-то воспринимать.
изучение матчасти очень полмогает в понимании
А пока из-за перлов типа "хоть DI ограничился а не в IoC полез" это сложно, да... хотя я понимаю, что IoC-контейнер имели ввиду, но не уверен, что вы это понимаете....
понимаю что это но не понимаю зачем это здесь в PHP а это доказывать вам - бремя доказательства всегда лежит на аргументирующей стороне
Ставить модель в зависимость от другой модели очень не хочется.
верно - интуиция великое дело.
Ну ведь foreign key же используеш
внешние ключи constraints они не меняют данные. Если конечно не имелось ввиду касткадное удаление и обновление
 

MiksIr

miksir@home:~$
MiksIr
Дак предложили, вынести в одну модель, которая будет другими управлять тоже, вызываешь в ней save() а в нем остальные save() связанных моделей м?
Ну да, как вариант. Хотя по сути своей это не модель будет, так как никаких данных не содержит, а хелпер... т.е. как я понял тот самый сервисны слой, о котором говорил fixxxer.
 

caballero

Новичок
Дак предложили, вынести в одну модель, которая будет другими управлять тоже,
смешать модель и контроллер? ту разделить не могут где что.
и кстати уточните что речь идет о "толстой" модели - яснее будет о чем пост
 

MiksIr

miksir@home:~$
Не, понимают почти одинаково, а вот допиливают каждый по-своему =)
 

caballero

Новичок
Очередной тред, доказывающий, что MVC каждый понимает по-своему.
Дело в том что есть MVC как идея - разделяй мухи и котлеты. Тут все понятно - не смешивай
PHP HTML и SQL и будет тебе MVC

А есть паттерн MVC который тупо перетащили в веб с десктопа а теперь блудят в этих трех соснах

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

DIG

Новичок
Партнер клуба
AmdY
Ты прав, есть кучка повторяющегося кода, тут есть над чем поработать.

Вы меня извините, я не думал что тема так разрастётся. Я для себя уже уяснил в каком направлении двигаться.
 

Redjik

Джедай-мастер
caballero
[off]
там было - Something is rotten in the state of Denmark.
с чистотой никак не связано.
Реверанс в сторону Розенкранца и Гильденстерна =)
[/off]
 

Вурдалак

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

fixxxer

К.О.
Партнер клуба
А есть паттерн MVC который тупо перетащили в веб с десктопа а теперь блудят в этих трех соснах
Не совсем. В вебе, по понятным причинам (stateless), сложилось несколько другое относительно десктопа типичное понимание - отсутствие связи между V и M. Что, в частности, и приводит к жирным контроллерам. Кто-то это решает активными шаблонами (которые ближе к десктопному MVC), кто-то видоизменяет паттерн так или иначе.
 

caballero

Новичок
Ребята, имейте совесть, вы нанесли человеку душевную травму.
каши мало ели нанести мне травму тем более душевную. Сам лурк почитываю но смешивать с обсуждением технических вопросов а особенно заменять ответы на них как то некошерно.

В вебе, по понятным причинам (stateless), сложилось несколько другое типичное понимание - отсутствие связи между V и M. Что, в частности, и приводит к жирным контроллерам.
самое интересное что эта связь более чем очевидна. Ведь вид когда рендерит себя лучше других знает какие данные для этого нужны в какой момент и в какой последовательности. Поэтому именгно вид должен получать данные с модели.
кроме того есть еще одна трабла - смешивание в кучу бизнес-логики и логики работы страницы.
Нельзя все пихать в контролер. логика работы страницы, ее отображения - это забота представления. Забота контроллера - роутинг и управление жизненным циклом страницы.
Бизнес логика моет быть в модели может быть вынесена в отдельный слой или бвть смешаной - например паттерн Active record
 

caballero

Новичок
Кто-то это решает активными шаблонами (которые ближе к десктопному MVC)
активный шаблон - прежде всего сам PHP. В любом случае активный или пассивный шаблон - это имплементация представления - оно не выходит за его рамки
 

fixxxer

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

Еще одна сторона вопроса. Я тут сам в этом треде контроллерами называю то, что ими называют обычно (так называемые page controllers), сам же это название не люблю. Если внимательно посмотреть на MVC, то C применительно к вебу - это на самом деле то, что в веб-фреймворках называется front controller. Потому вполне можно "page controller" переименовать во view и не париться. В Django так и сделали, я во избежание левых дискуссий называю это просто Page. =)

Тем не менее, как мебель ни двигай, проблема code reuse все равно никуда не девается. Потому и появляются всякие прослойки в том или ином виде.
 
  • Like
Реакции: A1x

caballero

Новичок
то C применительно к вебу - это на самом деле то, что в веб-фреймворках называется front controller. Потому вполне можно "page controller" переименовать во view и не париться.
да, это логично
Тем не менее, как мебель ни двигай, проблема code reuse все равно никуда не девается. Потому и появляются всякие прослойки в том или ином виде.
наличие прослоек не проблема а наоборот это структуризирует архитектуру. Просто нужно четко понимать что оно делает и как управляется. Яркий пример - сервера приложений и прочие многозвенные системмы. Но PHP даже не имеет персистентных объектов - это по сути быстрый шаблонизатор с простым и легким скриптовым языком. То что Метт Зандстра попытался перетащить на него паттерны с явы вызывает только сочуствие.
Поэтому я и сослался на Котерова. Ведь вполне логично - первая скрипка - активный шаблонизатор роль которого выполняет сам PHP потому как и написан именно для этого. Остальное - вспомагательные фичи - роутер и слой для обработки данных.
 
Сверху