In einem CMS das ich verwende existiert eine Klasse, mit der sich verschiedene Daten eines Artikels abfragen lassen (getId(), getName() usw.). Ich habe diese Klasse um die Möglichkeit erweitert diese Daten zu verändern.
Da jeder Wert über eine Methode geändert wird (setId(), setName() usw.) und es vorkommen kann, dass mehrere Daten nacheinander geändert werden möchte ich nicht jedesmal in die DB schreiben, sondern nur an kritischen Stellen. Abschließendes Speichern erfolgt dann mit "$article->saveChanges();".
Ich habe dazu Eigenschaften und Methoden ergänzt die Änderungen vermerken ("_save()") und an genannten kritischen Stellen speichern ("_save_changes()"). Dazu zähle ich unter anderem sämtliche getXYZ()-Methoden. Da diese aber Teil der Oberklasse sind und ich _save_changes() am Anfang jeder dieser Methoden aufrufen müsste, folgende Fragen:
Kann ich in einer Kindklasse _call() verwenden, um den Methoden der Oberklasse, die nicht in der Kindklasse überschrieben werden, weitere Anweisungen hinzuzufügen?
Und entspricht parent:yz() einem statischen Aufruf oder bezieht sich $this in der Oberklasse dennoch auf die Kindklasse, in der der Aufruf erfolgt?
Beispiel (vereinfacht):
Danke und Gruß
Fabian
Da jeder Wert über eine Methode geändert wird (setId(), setName() usw.) und es vorkommen kann, dass mehrere Daten nacheinander geändert werden möchte ich nicht jedesmal in die DB schreiben, sondern nur an kritischen Stellen. Abschließendes Speichern erfolgt dann mit "$article->saveChanges();".
Ich habe dazu Eigenschaften und Methoden ergänzt die Änderungen vermerken ("_save()") und an genannten kritischen Stellen speichern ("_save_changes()"). Dazu zähle ich unter anderem sämtliche getXYZ()-Methoden. Da diese aber Teil der Oberklasse sind und ich _save_changes() am Anfang jeder dieser Methoden aufrufen müsste, folgende Fragen:
Kann ich in einer Kindklasse _call() verwenden, um den Methoden der Oberklasse, die nicht in der Kindklasse überschrieben werden, weitere Anweisungen hinzuzufügen?
Und entspricht parent:yz() einem statischen Aufruf oder bezieht sich $this in der Oberklasse dennoch auf die Kindklasse, in der der Aufruf erfolgt?
Beispiel (vereinfacht):
PHP-Code:
function __call($method, $args)
{
$this->_save_changes();
return parent::$method($args);
}
Fabian
Kommentar