2008-10-09 17 views
5

Kann ich die Methode fetchall in einem Modell überschreiben? Ich muss jedes Mal prüfen, ob fetchAll aufgerufen wird. Das Modell erweitert Zend_db_table_abstractZend Framework fetchAll

Antwort

9

Um diese Methode zu überschreiben, müssten Sie Zend_Db_Table_Abstract ableiten. Wie folgt:

<?php 
abstract class My_Db_Table_Abstract extends Zend_Db_Table_Abstract 
{ 
    ... 

    public function fetchAll($where, $order) 
    { 
     ... 
    } 

    ... 
} 

Dann stellen Sie sicher, dass Ihre Modelle stattdessen My_Db_Table_Abstract erweitern. Auf diese Weise erben Sie immer die überschriebene fetchAll-Methode.

+0

Da Sie es "Abstract" nennen, möchten Sie wahrscheinlich, dass es eine abstrakte Klasse ist. – chelmertz

+0

Ja, du hast Recht. Ich habe das Beispiel aktualisiert. Vielen Dank. –

0

Ja. Definieren Sie einfach eine neue fetchAll() -Methode in Ihrem Modell mit der gleichen Konstruktion wie die Zend_db_table_abstract-Methode (dh gleiche Eingabe/Ausgabe) und rufen Sie dann am Ende der Methode die übergeordnete Methode auf:

parent :: fetchAll ($ params)

Andrew