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 に答える