一旦PHP被实例化,它会在一个类中发生什么?

时间:2010-06-08 07:00:50

标签: php arrays oop class object

我只是在玩一些PHP,并想知道在另一个PHP脚本中创建类中的对象会发生什么?

我认为一旦它被创建并被处理,他们就不可能再回过头来从另一个脚本中“玩”它?

我的想法是尝试使用卡片类创建一种卡片,每张卡片都有特定的数据添加到每个单独的对象,使其独特,适合,价值等。一旦创建我需要能够回到特定的卡片使用它们。在java中我有一个卡对象的arraylist,我不知道如何在PHP中使用相同的区域。

感谢。

5 个答案:

答案 0 :(得分:2)

在php脚本中传递对象没有问题,你的问题是php是调用脚本的web服务器本质上是“无状态”。即,每当有人从浏览器发布网址时,就会启动完整的php程序副本。

为了在不同时间之间保存数据,有以下几种选择: - 一种是使用与用户会话相关联的$ _SESSION变量,但是$ _SESSION本身就是一个数组,所以它在这里得到了非常笨拙的复杂结构,而且,听起来你想要在用户之间共享套牌。

您可以序列化您的对象并将其存储在一个文件中 - 只要它不经常更新就可以了 - 但是如果它被每个用户更新,它们将开始覆盖其他用户的更改。

更好的方法是将数据库存储在数据库中(SQLITE通常内置于php中),以便多个用户可以以受控方式共享和更新。

另一个不错的选择是使用一个流行的数据缓存,例如“memcached”,它将在调用脚本之间缓存数据。

答案 1 :(得分:1)

在页面调用之间重用对象似乎是您的问题。也许你可以序列化对象并将其存储在数据库中并将其取回?检查php.net/serialize让我们知道它是怎么回事。

答案 2 :(得分:1)

保持对象可用的方法是序列化对象并将它们存储在数据库表中。如果您链接游戏ID或与卡类似的东西,那么您可以稍后使用此游戏ID检索它们。

我不知道你写的卡片游戏是否是实时的,使用数据库可能是太多的开销。另一种可能性是使用现有的缓存解决方案,例如Memcache。

答案 3 :(得分:0)

所以你想创建一个服务器端编码的卡片游戏?祝好运! 有可能这样做,因为我认为像你正在谈论的javascript这样的脚本更合适。 您可以创建一个初始化一副牌并使用索引等功能。将您的东西保存在cookie /会话中并使用回发。与jscript相比,在我看来,这将是一个很糟糕的工作。

当你考虑它时,你可以使用ajax让这个游戏对用户感觉更好:)。

答案 4 :(得分:0)

Php脚本与Java服务器应用程序不同。 你的Java服务器将运行很长一段时间,你的PHP脚本只是一次性的事情。

而不是这种过程:用户向Java运行服务器发出请求,服务器在其中一个无限循环中接收请求,服务器处理它,服务器发送响应,服务器等待新请求;你有这样的事情:一个网络服务器(Apache,Nginx,无论其他网络服务器)接收用户的请求,了解它需要通过php解释,启动一个php子,这个孩子在脚本中做什么,发送它的答案,死,服务器等待新的请求。

因此,当php脚本结束时,没有任何东西(在好的情况下)。

但是,php脚本可以在服务器上使用持久存储,以便另一个请求可以从中读取。这就是为什么你有文件,数据库甚至共享记忆功能的原因。

如果游戏状态仅适用于一个用户,则可以使用会话(通常是文件)来存储您的套牌对象。如果要由多个玩家使用,则应在序列化后将其存储在数据库中。