Как превратить Zend Helper в синглтон? - PullRequest
1 голос
/ 13 декабря 2010

Мне нужно использовать помощник вида, чтобы подсчитывать кучу разных частичек. В партиалах я не могу получить доступ к переменным вида, но могу получить доступ к помощникам, поэтому я создал этот простой класс.

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(), чтобы она могла считать через все представления и частичные значения?

1 Ответ

4 голосов
/ 13 декабря 2010
  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 будет массивом.

...