Лыцарь пичальнава образа - August 25th, 2011 [entries|archive|friends|userinfo]
silly_sad

[ userinfo | ljr userinfo ]
[ archive | journal archive ]

August 25th, 2011

ООП, фрэймворки, ржач, индусы. [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
объект обозначающий состояние.
тоесть они поставили в соответсвие СОСТОЯНИЮ ОБЪЕКТ.
ОБЪЕКТОМ обозначили СОСТОЯНИЕ.
СОСТОЯНИЕ -- ОБЪЕКТОМ.
ОБЪЕКТ блять СОСТОЯНИЕ.

аминь.
Link2 comments|Leave a comment

navigation
[ viewing | August 25th, 2011 ]
[ go | Previous Day|Next Day ]