静态PHP类函数与对象实例的函数

时间:2014-02-01 17:48:25

标签: php function static

我正在尝试创建一个在执行登录之前清除用户ID会话的函数。你知道程序员最糟糕的噩梦是当另一个用户在同一台​​机器上登录时,持久会话仍然保持打开状态。 假设将在多用户环境中调用此函数,我可以将其定义为静态类函数(仅具有一个实例)

public static function clear()
{
 unset($_SESSION['user']
} 

还是应该声明为对象实例函数?

    public function clear()
   {
     unset($_SESSION['user']
   } 

如果多个用户调用该功能,会发生什么情况,例如同时登录?是否会同时删除所有客户端计算机上的会话,这当然会是一个混乱的结果?

1 个答案:

答案 0 :(得分:1)

静态方法实际上不是OOP。他们只是在类包装器中加载了一大堆过程代码。

更务实的是,静态方法很难(如果不是不可能的话)进行有效的单元测试。它们还引入了紧耦合,并且使得替代子类(这是OOP的主要要点之一)非常困难。

我还认为,如果能更好地理解会话如何在PHP中运行,可能会对您有所帮助。会话是每用户构造。一个用户不能影响另一个用户的会话。