2010-12-12 67 views
1

我對番茄CMS一個新的窗口小部件的工作和他們使用的接口:PHP類接口和錯誤有關抽象方法

interface Ad_Models_Interface_BannerPageAssoc 
{ 
    ... 

    /** 
    * Get banner-page by Zone Id 
    * 
    * @param int $zoneId Id of zone 
    */ 
    public function getByZoneId($zoneId); 
} 

和其他類實現該接口:

class Ad_Models_Dao_Mysql_BannerPageAssoc extends Tomato_Model_Dao 
implements Ad_Models_Interface_BannerPageAssoc 
{ 

    public function getByZoneId($zoneId) 
    { 
     $sql = sprintf("SELECT * FROM " . $this->_prefix . "ad_page_assoc"); 
     $rs = mysql_query($sql); 
     $rows = array(); 
     while ($row = mysql_fetch_object($rs)) { 
     $rows[] = $row; 
     } 
     mysql_free_result($rs); 
     return new Tomato_Model_RecordSet($rows, $this); 
    } 
} 

當我做這個類的一個對象,並調用該函數,我得到這個錯誤:

Fatal error: Class Ad_Models_Dao_Pdo_Mysql_BannerPageAssoc contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (Ad_Models_Interface_BannerPageAssoc::getByZoneId) in C:\xampp\htdocs\roepingen\application\modules\ad\models\dao\pdo\mysql\BannerPageAssoc.php on line 59

有誰甲肝e我是如何解決這個問題的一個想法?

回答

1

Ad_Models_Dao_Mysql_BannerPageAssoc與錯誤中的類不同: Ad_Models_Dao_Pdo_Mysql_BannerPageAssoc

+0

這確實是我的錯......感謝您的注意:-) – koko 2010-12-12 16:09:49

0

在使用關鍵字interface/abstract和extends/implements之間可能存在問題。您沒有提到實際發生錯誤的類,它是Ad_Models_Dao_Pdo_Mysql_BannerPageAssoc。如果該類實現了Ad_Models_Interface_BannerPageAssoc,則該類還必須實現所需的方法。在PHP中,Interfacesabtract classes的處理方式不同。