Moin,
möchte hier eine Art Abschluss schaffen in dem ich die für mich gefundene Regel präsentiere.
Für die Klasse wichtige Methoden sollten immer abstract definiert sein.
Eine Dummy Methode bietet sich bei einer Plugin Programmierung an, da sie Schreibarbeit erspart. Ein Beispiel:
Es gibt eine Methode save, die speichert ein Array
public function save()
{
$this->_beforeSave( $arSaveDaten );
//--- speichert Array
$this->_afterSave( $arSaveDaten );
}
damit man die Methode _beforeSave nicht immer definieren muss und den Code zumüllt (es kann ja relativ vieler solcher Methoden geben), ist meine Empfehlung diese Methode nicht abstrakt zu definieren. Somit muss man sie bei einer Ableitung nicht definieren, wenn man sie nicht braucht.
Die Gefahr ist natürlich wie schon beschrieben, dass ein Fehler nicht oder nur sehr schwer erkannt wird. Wenn man z.B. von der Klasse ableitet und die Methode _betoreSafe nennt, wird sie nie aufgerufen und es gibt keinen Fehler. Desweiteren könnten diese Methoden unterschiedlich aufgerufen werden. Bei der einen Ableitung wird noch ein Parameter übergeben, bei einer anderen Ableitung gar 2 etc...
Ob man jetzt dem Array Daten hinzufügt ist für das Speichern nicht weiter wichtig, deshalb ist die Methode _beforeSave nicht abstrakt. In der Basisklasse würde es eine Dummy Methode geben, welche einfach das Array unbehandelt wieder zurück gibt.
Anders sieht es aus, wenn es eine Methode _checkData() gibt, welche die Daten vor dem speichern nochmal überprüft. Diese Methode wiederum wäre abstrakt. Sie wird wahrscheinlich von jeder Ableitung benutzt.
Gruß
Abschluss bereiter
T-Rex