2010-12-12 16 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

誰もが肝炎ありませんどのように私はこの問題を解決できるアイデアですか?

答えて

1

Ad_Models_Dao_Mysql_BannerPageAssocは、エラーの場合と同じクラスではありません。 Ad_Models_Dao_Pdo_Mysql_BannerPageAssoc

+0

これは本当に私のせいです...気づいてくれてありがとう:-) – koko

0

キーワードのinterface/abstractとextends/implementsの間に問題がある可能性があります。実際にエラーが発生したクラスはAd_Models_Dao_Pdo_Mysql_BannerPageAssocではありません。そのクラスは、Ad_Models_Interface_BannerPageAssocを実装する場合にも、必要なメソッドを実装する必要があります。 InterfacesはPHPでabtract classesとは異なる扱いを受けます。

関連する問題