2010-12-13 10 views
1

ビューヘルパーを使用して、さまざまな部分集合の数をカウントする必要があります。 パーシャルではビュー変数にアクセスすることはできませんが、ヘルパーにアクセスできるため、この単純なクラスを作成しました。zendヘルパーをシングルトンにする方法は?

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

これに別のシングルトンを使用しないでください。ブートストラップパラメータまたはZendレジストリオブジェクトを使用してカウンタを格納することができます。 – takeshin

答えて

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は配列になります。

+0

Doing 1.は十分でした.Nr.2は私にはわかりません – Moak

+0

2は別のシングルトンクラスを使用して1と同じことを行います - http://php.net/manual/en/language.oop5.patternsを参照してください。 PHP – StasM

関連する問題