ООП, фрэймворки, ржач, индусы. |
[Aug. 25th, 2011|11:58 am] |
http://www.yiiframework.com/forum/index.php?/topic/14082-transaction-on-multiple-ar/
для ленивых даю экстракт:
чувак хочет средствами ООПшного фрэймворка сделать два инсерта в БД и объединить их в транзакцию.
из чего у него выходит следующая последовательность действий:
BEGIN BEGIN INSERT (...) INSERT (...) COMMIT COMMIT
и эта история имеет несколько забавных аспектов. перечислю их в порядке возрастания философской глубины.
(1) ответы от гуру: "извините, а какая у вас DBEngine?" "идите попробуйте сделать так как написано по ссылке"
(2) либо уёбищная ООП обёртка настолько успешна в смысле сокрытия реальности. либо программер вообще не понимает что такое транзакции и зачем они нужны, но упорно хочет их "применить". но oops, юзер понимает чего он хочет в конечном итоге: "that either both of the tables are inserted with new record or none" -- значит более верно первое предложение. тем не менее юзер не знает КАК и ищет интуитивный способ. (подробнее в п(4))
(3) уровень дискурса радует (как я неоднократно уже замечал) поэтому мне и дали наводку. пора делать робкие обобщения: А может быть это вообще свойство всех фрэймворкоёбов? тоесть люди свято верят что фрэймворк заменит им понимание либо люди не способны организовать свой код, свою работу и хотят чтобы фрэймворк это за них делал в итоге они получают тот же бардак в мыслях и коде + ещё один уровень абстракции для изучения. И, да, это таки объясняет нескончаемую череду ООП обёрток (безудержно растущую как горизонтально (наша лучче) так и вертикально (я написал обёртку к твоему интерфейсу)).
(4) главное. и кажется вам таки прийдётся заглянуть в пост по ссылке... ключевые места: "I want to ... using Active Record and Transaction." (имя объекта Transaction сразу меня насторожило.) " $tokentransaction = $token->dbConnection->beginTransaction(); // Transaction for token begin $modeltransaction = $model->dbConnection->beginTransaction(); // Transaction for model begin " Вот оно! объект "Транзакция" выстрелил. Юзер оказывается вполне видит и два бегина и два коммита и _сознательно_ ассоциирует их со своими двумя таблицами.
Я знаю как молодые гуры сейчас начнут рыготать над "дэбилом". Все вы ржущие -- тупые ЗУБРИЛЫ Всё что ставит вас выше этого индуса ни разу не понимание, а тупое знание. Вы самые настоящие аутисты не способные увидеть мир глазами другого человека!
а почему поступок этого индуса нелогичен??? придумайте тысячу ответов и все они будут зависеть от знания фактов неизвестных этому человеку!
Есть фрэймворк и он явственно подсказывает человеку неверный путь. А почему? А потому что верный путь идёт в разрез с ООП идеологией полностью. Этот путь реализуем, но предположить его (находясь во всём вот этом) крайне затруднительно.
Транзакция это состояние БД. И это состояние ГЛОБАЛЬНО! (в рамках коннекта) Оно простирается над всеми _ЛЖИВЫМИ_ говнообъектами "таблица", пронизывает все их лживые методы. Предположить подобную дикость истинно ООПэшный ум не в состоянии.
(4.5) и вот великие гуры -- создатели очередного великого фрэймворка создали очень полезный объект Transaction объект обозначающий состояние. тоесть они поставили в соответсвие СОСТОЯНИЮ ОБЪЕКТ. ОБЪЕКТОМ обозначили СОСТОЯНИЕ. СОСТОЯНИЕ -- ОБЪЕКТОМ. ОБЪЕКТ блять СОСТОЯНИЕ.
аминь. |
|
|