>> (вздыхает) continuation и есть такой контекст. в том-то и соль.
> Не такой. Определить, что сохранять в этом контексте в каждом конкретном случае
> — невероятно сложно.очень просто. надо только отвыкнуть пихать везде глобальные переменные — и сразу становится просто.
> Всё и сразу? Вот прямо-таки весь дамп области данных апликухи?
зачем? O_O у нас есть замыкание, оно знает, что в нём сохранено. вот это и писать. простейшие объекты там умеет (де)сериализовать сам рантайм, юзерские объекты надо этому научить один раз.
> Лучше все-таки оставить контекст на откуп самому приложению.
оно так и есть. только не надо руками над этим плясать.
>> да без разницы *в данном случае*. вообще.
> Огромная разница. В консольной аппликухе ты задал вопрос, и ждёшь на него
> ответа — и юзеру никуда не деться (кроме SIGKILL :) ).
> А в вебне он может спокойно сначала уйти на другую часть
> приложения, там что-то поделать, и только потом — ответить на твой
> вопрос.
(вздыхает). по-фи-гу. один запрос — одно действие — одна функция. страницу можно собрать из кучи функций, всем по-фи-гу. сверху у нас новостной блок — одна функция, в ней цикл вывода, пока не надоест (и вызов «чпок()», чтобы сообщить, что всё вывелось). снизу — рекламный: одна функция, в ней цикл вывода, пока не надоест. посередине корзинка: одна функция… ну, ты понял. из этих кубиков можно хоть одну страницу собрать, хоть сто страниц. в любом порядке. разных или одних и тех же. самим функциям — по-фи-гу. с их точки зрения — они выполняются линейно. единственное действие, которое им иногда надо повторять — «перерисоваться». и то нечасто, потому что фрэймворк в состоянии закэшировать всякую фигню.