2010-12-13 2 views
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() 함수를 변경하여 모든 뷰와 부분을 계산할 수 있도록하려면 어떻게해야합니까?

+1

다른 싱글 톤을 사용하지 마십시오. 부트 스트랩 매개 변수 또는 젠드 레지스트리 객체를 사용하여 카운터를 저장할 수 있습니다. – 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

1을하는 것만으로 충분했습니다. Nr.2는 나에게 명확하지 않았습니다. – Moak

+0

2는 별도의 싱글 톤 클래스를 사용하여 1과 같습니다. http://php.net/manual/en/language.oop5.patterns를 참조하십시오. PHP – StasM

관련 문제