在视图之间传递与用户对象相关的数据- PHP MVC


Passing data associated with a user object between views- PHP MVC

我正在使用一个轻量级的PHP MVC(国产-不是我-但基于Codeigniter)来开发一个web应用程序。目前,我只有一个对象——User。

web应用程序允许每个用户管理一个集合(假设用户有一个不同动物的集合)并动态地操作集合。网站的一个页面将定义动物的行为,另一个页面将指定动物的外观。但是,如果用户在定义行为时删除了动物,则当用户移动到外观选项卡时,应该将该动物从集合中删除。

每个动物可以(应该)是一个对象吗?我知道在Java中,我可以将对象数组传递给我的应用程序中的另一个对象,但我不确定这在PHP中是否可能/常见(这将是理想的实现)。

或者,如果我要将所有动物存储在某种数据结构中,我可以在视图之间传递该数据结构吗(从客户端通过AJAX?)

我不想将这些信息存储在数据库中,因为在每次页面加载之间,我必须重新查询数据库以查看是否进行了任何更改。

这确实是可能的,但只有在某种持久存储的情况下。PHP只在请求期间存在。一旦用户看到完成的"产品",PHP脚本就不再运行了,因此没有存储在HTML或其他地方的所有信息都丢失了。也就是说,你需要某种存储空间。

是的,数据库查询每次更改可能会影响性能。但你可以做一件简单易行的事。*)在一个用户可以定义行为的视图中,您将用户提交回他来自的同一个控制器。然后,该控制器从HTML中读取所有相关数据(读取什么以及如何读取取决于数据的表示方式)。读取的数据将用于更新现有数据集。然后用户被重定向到外观控制器和它的视图。

*)整个数据结构被序列化并保存在一个文件中。这很容易读,也很容易写。如果您决定使用数据库,则可以将此文件用作缓存。无论何时发生更改,都会删除缓存并更新数据库。下次控制器需要数据但找不到缓存时,将从数据库重新创建缓存。除非您更改每个页面上的数据,否则这是一个巨大的性能提升。