PHP-класс с интерфейсом и ошибкой об абстрактном методе - PullRequest
1 голос
/ 12 декабря 2010

Я работаю над новым виджетом для Tomato CMS, и они используют интерфейс:

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

Когда я создаю объектэтого класса и вызова функции, я получаю эту ошибку:

Неустранимая ошибка: класс Ad_Models_Dao_Pdo_Mysql_BannerPageAssoc содержит 1 абстрактный метод и поэтому должен быть объявлен как абстрактный или реализовать оставшиеся методы (Ad_Models_Interface_BannerPageAssoc :: getByZone): \ xampp \ htdocs \ roepingen \ application \ modules \ ad \ models \ dao \ pdo \ mysql \ BannerPageAssoc.php в строке 59

Кто-нибудь знает, как я могу решить эту проблему?

Ответы [ 2 ]

1 голос
/ 12 декабря 2010

Ad_Models_Dao_Mysql_BannerPageAssoc не тот же класс, что и в ошибке: Ad_Models_Dao_Pdo_Mysql_BannerPageAssoc.

0 голосов
/ 12 декабря 2010

Может быть проблема между использованием ключевых слов интерфейс / аннотация и расширяет / реализует.Вы не упоминаете класс, в котором вы фактически получаете ошибку, а именно Ad_Models_Dao_Pdo_Mysql_BannerPageAssoc.Этот класс также должен реализовывать необходимые методы, если он реализует Ad_Models_Interface_BannerPageAssoc. Интерфейсы обрабатываются иначе, чем абстрагируют классы в PHP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...