我想创建一个不需要一直创建的对象.... 例如,我有一个用户对象,并且用户是从db创建的,所以,当用户登录时,我可以从db读取用户对象信息...每个用户发出请求,我需要创建一个新用户再次对象....即使我做一个单例对象...它仍然可以“保持”对象....但我想保存php和数据库之间的通信...有没有办法保持对象而不是一直查询db?谢谢。
答案 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
。
希望这个帮助家伙:)