可以一个“继承”一个类及其属性而无需重新实例化它吗?

时间:2011-04-14 08:11:09

标签: php class instantiation

也许是一个有点奇怪的问题,但我想知道是否有任何方法来继承类属性并设置变量而无需在需要它的所有页面上重新实例化它。例如,假设我有“user”类,它可以执行3项操作:

  1. 身份登录用户
  2. 检查用户/登录会话是否有效(已应用) 到某些“受保护”区域)
  3. 根据需要将用户注销
  4. 现在,在登录页面上我实例化了类,用户提交了一个表单,用户名和密码被捕获为POST变量,分配给类中的变量,并调用登录函数。完成所有数据库工作,设置会话,如果成功,则将用户重定向到页面'x'

    现在,在页面'x'上我需要检查登录会话的用户是否有效,并且这使用了我的类中的一个名为isUserValid()的函数

    我是否无法“携带”实例化的类并根据原始输入的值调用该函数?目前,在需要检查的每个页面上调用用户类的新实例,因此用户名和登录令牌存储在会话变量中,以便在新分配的类实例中使用。

    我希望有一种方法可以使用我们在登录主页上创建的第一个(也是唯一的)类实例。

    亲切的问候, 西蒙

3 个答案:

答案 0 :(得分:2)

你可以将方法设为静态,这样它就会被User :: isUserValid()调用并在那里进行检查......

答案 1 :(得分:1)

除了使用会话(或其他一些数据源)之外,PHP在请求之间没有状态

如果你需要在请求之间进行转移,你需要将它存储在某个地方并在下一个pae上重新加载它。

答案 2 :(得分:0)

我认为你要找的是spl_autoload_register

它允许您自动调用任何类,而无需包含类文件。它包括即时的类文件。只包含的文件是autoload.php文件。当然你仍然需要通过$ var = new Class()来引用类,但它仍然节省了很多麻烦!