Миру такая конструкция известна. Результатом присваивания является присвоенное значение, и использование этого результата вполне корректно.
Нетрадиционное программирование тут заключается скорее в том, что функция, названная как сеттер, им не является.
Описание задачи сильно напоминает изначально неверное решение проблемы.
Может, лучше озвучить проблему?
Не факт, что ее обязательно решать чесанием левой пяткой за правым ухом.
Sergey Goryachev: base64, конечно, тяжеловат, но сервер предположительно отдает клиенту gzip, так что на трафике это сказывается не так уж и болезненно.
Я как-то делал калькулятор, который можно было просто сохранить с сайта себе в офлайн и считать хоть вовсе без интернета. Вся страница с калькулятором в одном файле - именно из соображений портабельности.
Анатолий: вот только конкретику (например, количество пользователей, распределенность системы, требования к надежности) - вы забыли включить в вопрос. Поэтому обсуждение конкретных инструментов совершенно беспредметно.
Артём Петренков: ну, так сейчас PHP + Javascript уже стало классической технологией. Для написания прототипа, а если особенно звездных требований нет - то и рабочей системы.
И людей на этот стек найти не проблема, и пробовать можно начать довольно быстро, и изменения недороги.
А уж если оно взлетит настолько, что будет иметь смысл говорить о нагрузках и кластеризации... впрочем, к тому времени, скорее всего, его все равно захочется выкинуть и написать заново.
Анатолий: я, если что, ни разу облако не советовал.
Облако - это для тех, кто перерос один сервер.
Или для тех, кто наслушался рекламы и сам не знает, что ему нужно.
Анатолий: превращение исключительно десктопного приложения в олнайн-сервис будет головной болью в любом случае. Если оно будет гвоздями прибито к Виндам - острой болью.
Превращать любые приложения для совместной работы в онлайн-сервисы - это настолько очевидный и повсеместный тренд, что в этом веке даже до лютых ретроградов вроде 1С дошло, что пора бы.
Анатолий: Вы, упираясь в этот "нужен офлайн" и "все равно данные разных пользователей сводить надо", наваляете на виндах лютый энтерпрайз, под который придется покупать и раскочегаривать винсервер, не говоря про лицензии на каждое подключение.
Сделайте то же самое изначально в веб-варианте - и для работы внутри офиса сгодится любая старая галоша, на которую можно будет поставить LAMP. Бесплатно.
Анатолий: Ну, напишите десктопную программу, желательно исключительно под винды - на каком-нибудь Шарпе - и затрахайтесь потом превращать ее в нормальный сервис. Опыт - вещь бесценная, кто бы спорил.
31Russ: "между" как раз ничего нет. Нужно искать в другой стороне. Открытое ядро и платные модули. Или завязка каких-то открытых сервисов на API вашего сайта (у вас же ниша?). Фантазия нужна - и понимание того, кто ваш клиент и что может привязать его к вам без лишних запретов и упрятываний.
31Russ: Самый гуманный вариант, конечно - оплата, подразумевающая поддержку и обновление в течение следующего года с льготами на следующие годы. Битрикс так работает, например, и не прячет код. Но он, с одной стороны, может себе позволить юридический отдел, а с другой - имеет армию перепродажников, которые его настойчиво втюхивают клиентам, ибо имеют свою долю. Маленькой студии так работать, конечно, опаснее...
31Russ: не каждый заказчик готов иметь ограниченный доступ к собственному сайту. Поставьте себя на место того, кто у клиента будет заниматься сайтом.
Что-то глючит, в своем коде ошибок не видно, в ваш не заглянуть. Отладка - в удовольствие!
Нужна новая фича, клиент хочет ее написать... а как? У него нет даже возможности поднять свой тестовый сервер - исходников-то нет. Любые правки - прямо на боевом сайте? Удачи, чо.
В общем, если бы я работал на вашего клиента - его лояльность вы бы потеряли сразу.
А почему их вообще должны волновать дубликаты страниц на одном и том же сайте? Думаете, у всяких дурных CMS редко встречается, что у одних и тех же страниц разные адреса?
Евгений Обыкновенный:
> функцию надо вызывать рекурсивно, и в каждом вызове нужна своя копия объекта
Если вам надо тупо исчерпать стек, то есть способы и без таких извращений.
Рекурсия и создание объектов, особенно локальных - это уверенный шаг на грабли.
Нетрадиционное программирование тут заключается скорее в том, что функция, названная как сеттер, им не является.