2010-12-12 7 views
1

ich auf ein neues Widget für Tomato CMS arbeitete und sie verwenden eine Schnittstelle:PHP-Klasse mit dem Interface und Fehlern über abstrakte Methode

interface Ad_Models_Interface_BannerPageAssoc 
{ 
    ... 

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

und eine andere Klasse, die diese Schnittstelle implementiert:

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

Wenn ich ein Objekt dieser Klasse und rufen Sie die Funktion machen, ich diesen Fehler:

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

niemand hav e eine Idee, wie ich dieses Problem lösen kann?

Antwort

1

Ad_Models_Dao_Mysql_BannerPageAssoc ist nicht dieselbe Klasse wie im Fehler: Ad_Models_Dao_Pdo_Mysql_BannerPageAssoc.

+0

Das ist in der Tat meine Schuld ... Danke für's Bemerken :-) – koko

0

Möglicherweise liegt ein Problem zwischen der Verwendung der Schlüsselwörter interface/abstract und extends/implements vor. Sie erwähnen nicht die Klasse, bei der der Fehler tatsächlich auftritt, nämlich Ad_Models_Dao_Pdo_Mysql_BannerPageAssoc. Diese Klasse muss auch die erforderlichen Methoden implementieren, wenn Ad_Models_Interface_BannerPageAssoc implementiert wird. Interfaces werden in PHP anders behandelt als abtract classes.

Verwandte Themen