我怎么能在PHP中实现这一点?

时间:2011-07-01 10:29:22

标签: php object

我想创建一个不需要一直创建的对象.... 例如,我有一个用户对象,并且用户是从db创建的,所以,当用户登录时,我可以从db读取用户对象信息...每个用户发出请求,我需要创建一个新用户再次对象....即使我做一个单例对象...它仍然可以“保持”对象....但我想保存php和数据库之间的通信...有没有办法保持对象而不是一直查询db?谢谢。

4 个答案:

答案 0 :(得分:5)

把它放在$ _SESSION中?如果我正确地阅读你的问题,这将是有道理的

答案 1 :(得分:2)

  

但我想保存php和db之间的通信

使用APC或Memcached并缓存查询。每当User对象以需要将其写回数据库的方式更改时,都会使缓存失效。

这仍然会在每个请求上创建一个新的User对象,但它会为您保存到数据库的往返(但不能保存到缓存)。在没有将其序列化/持久化到其他层的情况下,无法在请求之间将PHP对象保留在内存中。 PHP没有任何共享。 PHP对象可以满足请求。

答案 2 :(得分:0)

至于将用户数据存储在一个对象中并将其存储在一个会话中,我认为没问题,但我会在会话本身内拖动过多的数据。在查看不断重新查询数据源或使用会话之间,您需要获得平衡。这实际上取决于您的应用和环境。

答案 3 :(得分:-1)

您可以通过两种方式实现这一目标:

1)正如Tattat所说,您可以查询数据库并获取用户信息并将其作为对象保存到会话$_SESSION['userObj'] = $userObj中。然后,您可以将其从会话中的任何位置拉回来,例如$user = $_SESSION['userObj'];

2)第二种方式是从你在所有页面上包含的常见php页面继承(现在称之为common.php)。使用PHP GLOBAL varible使其可用于包含commmon php文件的任何页面。例如

global $user; 

$admin = db_fetch_object(db_query("SELECT * FROM user u WHERE u.user_id = '%d'", $_SESSION['admin_id']));

只要您包含我之前提到的$user文件,您的其他php页面就可以访问变量common.php

希望这个帮助家伙:)