2013-06-19 4 views
2

Я использую легкий PHP MVC (homegrown - не я, но основанный на Codeigniter) для разработки веб-приложения. В настоящее время у меня есть только один объект - Пользователь.Передача данных, связанных с объектом пользователя между представлениями. PHP MVC

Веб-приложение позволяет каждому пользователю курировать коллекцию (скажем, пользователь имеет коллекцию разных животных) и манипулировать коллекцией «на лету». Одна страница на сайте будет определять набор поведения животных, а другая - внешний вид. Однако, если пользователь удаляет животное при определении поведения, это животное должно быть удалено из коллекции, как только пользователь перейдет на вкладку внешнего вида.

Могло (должно) каждое животное быть объектом? Я знаю, что в Java я могу передать массив объектов другому объекту в моем приложении, но не уверен, что это возможно/распространено в PHP (это была бы идеальная реализация).

В качестве альтернативы, если бы я хранить все животные в какой-то структуры данных, я мог передать эту структуру данных между видами (со стороны клиента через AJAX?)

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

+0

Сколько просмотров вы используете на странице? Или два мнения, которые вы упомянули, производят два разных интерфейса: один для html-страницы и один для ответа ajax. Это сбивает с толку (особенно, поскольку CI делает вид, что взгляды - это просто прославленные шаблоны). –

+0

Один вид на страницу (страницы имеют очень разную функциональность) и две страницы - два вида. –

+0

Спросите себя, почему вы не хотите использовать базу данных. Для этого они нужны! Запрос mysql для типа данных, которые вы упоминаете, занимает около микросекунды, если запрос является сложным и меньше, если он прост. Если вы действительно чувствуете себя самобичеванием, вы можете хранить данные в CSV, JSON или XML и загружать в память для каждого использования, но приложение не будет хорошо масштабироваться. Mysql будет обрабатывать транзакции данных быстрее, чем любой код, который вы или я, скорее всего, напишем. Если у вас есть две страницы, вам не нужно ajax для передачи данных. Просто получайте php, чтобы писать его каждый раз, когда вы его просматриваете. Еще раз, mysqli _ * ... –

ответ

0

Это действительно возможно, но только с каким-то постоянным хранилищем. PHP работает только во время запроса. Когда пользователь видит готовый «продукт», скрипт PHP больше не запускается, и поэтому вся информация, которая не хранится в HTML или где-то еще, теряется. При этом вам нужно какое-то хранилище.

Да, запросы базы данных каждый раз, когда что-то меняется, возможно, поражает производительность. Но вы можете сделать одну вещь, которая проста и удобна в обращении. *) В одном представлении, где пользователь может определить поведение, вы направляете пользователя после отправки обратно тому же самому контроллеру, из которого он пришел. Затем этот контроллер считывает все соответствующие данные из HTML (что и как зависит от того, как ваши данные представлены в любом случае). Эти прочитанные данные будут использоваться для обновления существующего набора. Затем пользователь перенаправляется на контроллер внешнего вида, и его вид.

*) Вся структура данных сериализуется и сохраняется в файле. Это легко читать и легко писать. Если вы решили использовать базу данных, вы можете использовать этот файл как кеширование. Всякий раз, когда происходят изменения, кеш удаляется и база данных обновляется. В следующий раз, когда контроллеру нужны данные и он не найдет кеш, кеш воссоздается из базы данных. Если вы не измените данные на каждой странице, это массовое повышение производительности.

Смежные вопросы