2012-04-12 50 views
0

如何才能使抽象函數在emaillogger類中工作?如何訪問Zend中的抽象保護函數

class EmailLogger extends Zend_Log_Writer_Abstract 

,我想使用的功能_write

protected function _write($event) 
{ 
     $this->_events[] = $this->_formatter->format($event); 
} 

然後我得到這個錯誤

類EmailLogger包含1種抽象方法,因此必須聲明爲抽象或實現其餘的方法(Zend_Log_FactoryInterface :: factory)

我不太確定這裏要做什麼 我試着用實現Zend_Log_FactoryInterfac E,但它diddn't工作

感謝,理查德

回答

1

Zend_Log_Writer_Abstract實現Zend_Log_FactoryInterface它具有以下代碼:

static public function factory($config); 

這迫使Zend_Log_Writer_Abstract和任何子類也有factory方法。爲了滿足這一要求,你可以把其中調用父方法的包裝方法:

class EmailLogger extends Zend_Log_Writer_Abstract 
{ 
    // Add this method in conjunction to what you already have in your class 
    public static function factory($config) 
    { 
     parent::factory($config); 
    } 
} 
+0

感謝,投入空函數的工作,它讓我感到困惑一點,因爲它不是一個抽象的功能,反正 - 學到了一些東西,謝謝 – Richard 2012-04-12 05:25:33

+1

沒問題。接口對於在任何對象中強制執行都很有用,但抽象簽名對於在子類中執行實現非常有用。 – 2012-04-12 05:29:36