我如何在PHP中管理User对象的概念?

时间:2013-08-25 06:26:14

标签: php oop

好吧,我对OOP整体还是很陌生,但我现在已经创建了一些可行的类,我正在慢慢掌握PHP中各种OOP的概念。在我目前正在处理的项目中,用户可以注册,登录/注销以及上传/删除/评论/评价图像。

目前,当用户登录时,我将大部分信息(我从数据库中检索到的信息)放在$_SESSION超全局中。这包括诸如名字,用户名,user_id等信息。

补充一点,我有一个名为user.functions.php的页面,其中包含许多与“用户”概念相关的杂项功能,例如权限检查,请求其他用户数据,检查成功登录,注册用户等

我的问题是如何将其作为User课程进行管理?如果我理解正确,页面上的任何内容都只存在于该页面上,所以我不必声明

new User();

在我需要执行与该用户相关的任务的每个页面上?无论如何这有效吗?调用类似函数不是更简单:

changeAddress();

而不是:

$user = new User();
$user->changeAddress();

我目前存储在会话中的关键用户数据如user_id怎么样?我是否也会在类中迁移该数据并通过getter方法检索它?

基本上,我没有看到用户对象的概念如何能够提高整体代码质量,如果用户(这是一个固有的跨页面概念)与一个对象相关联,该对象仅存在于一个对象的范围内文件?

我在这里缺少什么?

2 个答案:

答案 0 :(得分:0)

而不是将所有信息单独放在$_SESSION中,您可以在会话中存储$ user对象,以便您可以从任何页面访问用户对象。

$_SESSION['user'] = new User();
$_SESSION['user']->changeAddress();

答案 1 :(得分:0)

您正在处理两个不同的概念:

  • 在课程中使用用户相关功能。
  • http协议的无状态特性导致所有信息在请求 - 响应周期完成后丢失,除了可能通过各种机制在请求之间保留的会话信息。

因此,无论如何,您必须重新创建对象或实际上任何变量。创建某个类的对象不应该花费太多。填充成员是重要的。遵循非OO方法将导致填充单个变量而不是类的成员,而不会提高性能。