1

我需要使用视图助手来计算一堆不同的部分。在部分中我无法访问视图变量,但我可以访问助手,所以我创建了这个简单的类。

class Zend_View_Helper_Counter extends Zend_View_Helper_Abstract{
    protected $count = 0;
    public function counter(){
        return $this;
    }
    public function add($i = 1){
        $this->count = $this->count + (int) $i;
        return $this;   
    }
    public function get(){
        return $this->count;    
    }
    public function set($count){
        $this->count  = (int) $count;
        return $this;   
    }
}

然而,这<?php echo $this->counter()->add()->get()?>总是返回 1。我猜这是因为它总是类的不同实例。我需要如何更改counter()函数以便它可以计算所有视图和部分?

4

1 回答 1

4
  1. 使用静力学:

    static protected $count = 0;
    public function add($i = 1){
      self::$count = self::$count + (int) $i;
      return $this;   
    }
    
  2. 编写一个单独的计数器单例,然后执行:

     public function get(){
       return Counter::getInstance();
     }
     public function add($i = 1){
        Counter::getInstance()->add($i);
        return $this;
     }
    

如果你愿意,你也可以通过使用命名计数器来扩展它,然后 $count 将是一个数组。

于 2010-12-13T07:13:46.150 回答