在新实例上重新初始化静态变量

时间:2013-03-18 08:07:15

标签: php class

这是我的问题,我在方法中使用静态变量。我使用for循环来创建新实例。

class test_for{

    function staticplus(){
        static $i=0;
        $i++;
        return $i;
    }

    function countplus() {
        $res = '';
        for($k=0 ; $k<3 ; $k++) {
            $res .= $this->staticplus();
        }
        return $res;
    }
}

for($j=0 ; $j<3 ; $j++) {
    $countp = new test_for;
    echo $countp->countplus().'</br>';
}

它返回:

123
456
789

有没有办法在创建新实例时初始化静态变量,因此返回:

123
123
123

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

尝试将res放入静态变量中:

public res 

function countplus() {
    $this->res = 0;
    for($k=0 ; $k<3 ; $k++) {
        $this->res .= $this->staticplus();
    }
    return $this->res;
}

答案 1 :(得分:0)

我不明白为什么需要这个,但这种行为可以实现。 试试这个:

class test_for{

protected static $st;        // Declare a class variable (static)

public function __construct(){ // Magic... this is called at every new
    self::$st = 0;           // Reset static variable
}

function staticplus(){
    return ++self::$st;
}

function countplus() {
    $res = '';
    for($k=0 ; $k<3 ; $k++) {
        $res .= $this->staticplus();
    }
    return $res;
}
}

for($j=0 ; $j<3 ; $j++) {
   $countp = new test_for;
   echo $countp->countplus().'</br>';
}