@schors
schors
10 Sep 2015

Столкнулся с какой-то глупостью. Веб-приложение. Достаточно крупное. С ветвистыми модулями. От точки входа к модулю как передать конкретно данный для данный сессии коннект к базе данных? Сейчас все функции просто тащат за собой и передают дальше некий env.

22 Sep 2015

schors, вопросов больше чем ответов
1) какой язык?
2) что такое модуль?
3) что за точка входа и в чем проблема внутри приложения что-то передать какому-то модулю, если я вообще правильно понимаю что такое в данном случае модуль?
Ответ на текущий момент: ХЗ

22 Sep 2015

да хоть питон, хоть перл. модуль - грубо говоря package в perl, вот то что import в питон. как прокинуть вглубь коннект к базе. вглубь - конечной функции, которая там в пятом колене по иерархии модулей

#vysxu/2 в ответ на /1
22 Sep 2015

schors, модули в питоне - это объекты. Передай в объект объект. Не понимаю в чем проблема? Возможно передай по ссылке.

#vysxu/3 в ответ на /2
22 Sep 2015

"модули в питоне - это объекты" - эээээ
"Возможно передай по ссылке" - так и фигачить во всех функциях передачу дальше? Я хотел бы узнать как делают
Сейчас я решил немного странным способом. Хотя не вижу почему бы и нет. Я запихал все функции модуля в класс, постановил в спецификации проекта, что объекты нужны для контекстуализации и да, пихаю в объект

#vysxu/4 в ответ на /3
22 Sep 2015

schors, ну в питоне вообще все объект ))))

#vysxu/5 в ответ на /4
22 Sep 2015

ну так скажем я плохо представляю как модуль как объект

#vysxu/6 в ответ на /5
23 Sep 2015

schors, я вот тоже пытаюсь в твои установки врубиться и не пойму в чем проблема. Ну импортнул ты модуль. Он в адресном пространстве твоего приложения. Допустим там объект какой создался. У него где-то там коннект к БД передать надо. Ну так приконекться к БД и отдай ему. Зачем тебе при наличии ООП думать о том, как какой-то внутренней функции чего-то там передастся? Объект - это черный ящик. Ты ему на вход/входы отдал требуемое, с выхода получил что тебе нужно и что там внутри и как обрабатывается - вообще не должно тебя волновать.
А если ты о том, что импортируешь через from {module} import {func} as myfunc, так воспринимай, как реплицирование функции в свое приложение и работай с ней как с функцией.
Может я чего-то не так понимаю?

#vysxu/7 в ответ на /6
23 Sep 2015

"Допустим там объект какой создался" - нет, я пишу REST, там нет состояний, нет смысла в объектах от слова совсем. всё процедурно.

#vysxu/8 в ответ на /7
23 Sep 2015

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

#vysxu/9 в ответ на /7
23 Sep 2015

schors, ну функцию ты импортнул фактически тогда. И в чем проблема? Передай ей коннект. Она, если ей надо, притянет всю остальную тряхомудию сзади неё. И передаст ей коннект. Адресное пространство будет все равно одно.

#vysxu/10 в ответ на /8
23 Sep 2015

тебя не смущает, что GO это ООП во все дыры?

#vysxu/12 в ответ на /11
23 Sep 2015

schors, дошло. Ты хочешь между вызовами передавать объект? Не. Не выйдет наверное без такой хреноты как в PHP был pconnect.

#vysxu/13 в ответ на /8
23 Sep 2015

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

#vysxu/14 в ответ на /13
23 Sep 2015

грубо говоря, я не постеснялся бы глобальное переменной, но она не тредсейф

#vysxu/15 в ответ на /13
23 Sep 2015

не общепринятое так скажем. но Plan 9 это вполне ООП аж с участием мёртвого страуса

#vysxu/18 в ответ на /16

Добавить пост

Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
Для форматирования текста используется Markdown.