2010-07-13 76 views
1

我有一个类,它类似于以下内容:PHP类和静态变量 - 我应该使用__destruct()吗?

class Person 
{ 
    private static $_sqlData; 

    public function __construct($id) 
    { 
     if (!self::$_sqlData) 
     { 
     self::$_sqlData = // GET THE DB STUFF 
     } 
    } 

    public function getName() 
    { 
     return self::$_sqlData['name']; 
    } 
} 

这一直工作正常,直到我需要把它放在一个循环。

foreach ($ids as $id) 
{ 
    $person = new Person($id); 
    echo $person->getName(); 
} 

这继续返回第一人称名称,而不是给定ID的所有名称。原因是静态变量。 我已经通过添加__destruct()函数来设置$_sqlData为false,然后在foreach()循环中调用unset()$person来解决此问题。

这是处理这个问题的好方法吗?我应该以不同的方式处理这个问题吗

回答

4

为什么使用静态变量?有什么你需要这个?它似乎不使用$ _sqlData静态变量,只是使用一个实例变量,会给你相同的结果,除非有什么你没有显示我们。

实例变量将会破坏,就像您手动执行静态变量一样。