2010-12-13 9 views
1

Ich brauche einen View-Helfer, um Zählungen in einer Vielzahl von Teiltönen zu machen. In den Partials kann ich nicht auf View-Variablen zugreifen, aber ich kann auf Helfer zugreifen, also habe ich diese einfache Klasse erstellt.Wie man einen Zend-Helfer zu einem Singleton macht?

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; 
    } 
} 

Doch diese <?php echo $this->counter()->add()->get()?> gibt immer 1. Ich denke, das liegt daran, dass es immer eine andere Instanz der Klasse. Wie würde ich die counter() Funktion ändern müssen, damit es durch alle Ansichten und Teiltöne zählen kann?

+1

Verwenden Sie keinen anderen Singleton dafür. Sie können Bootstrap-Parameter oder das Zend Registry-Objekt verwenden, um den Zähler zu speichern. – takeshin

Antwort

4
  1. Verwendung Statik:

    static protected $count = 0; 
    public function add($i = 1){ 
        self::$count = self::$count + (int) $i; 
        return $this; 
    } 
    
  2. einen separaten Zähler Singletons schreiben und dann tun:

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

Wenn Sie wollen, ist es Ihnen auch mit dem Namen Zähler erstrecken und dann würde $ count ein Array sein.

+0

Doing 1. war genug - Nr.2 war nicht zu mir – Moak

+0

2 tut das gleiche wie 1 mit separaten Singleton-Klasse - siehe hier: http://php.net/manual/en/language.oop5.patterns. php – StasM

Verwandte Themen