pl: per Interace Datentyp definieren möglich?

Beitrag lesen

$this->control() und $this->browse() sind demnach ganz normale Methode, die dem Objekt den Auftrag geben, die Benutzereingabe zu übernehmen oder die Eingabeseite aufzubereiten. Das werden sie mit Hilfe eines Schwarms von Helper-Objekten tun, und es geht über einen Setter weit hinaus.

In meinem FW sind das Methoden eines Interface die über die Framework-Instanz aufgerufen werden. Diese Instanz aggregiert z.B. eine Instanz der Klasse xCGI und delegiert die param()-Methode der Klasse xCGI in eine eigene Methode die denselben Namen hat. Das befähigt die FW-Instanz zum Lesen sämtlicher Parameter welche der Request mit sich bringt.

Mitnichten also ein "Schwarm von Helper Objekten".

Interessant zu dieser Helper-Geschichte übrigens ist die Fabrikmethode insbesondere wenn Helper zur Laufzeit nachgelagert aggregiert werden. Das könnte z.B. beim ersten Aufruf von $this->param() erfolgen ist aber nicht wirklich sinnvoll, weil $this->param() ohnehin bei jedem Request aufgerufen wird.

$this->control() ist schon mal gar keiner, weil dieser Methode ein wesentliches Element eines Setters fehlt: der Parameter mit dem Wert, der in einer Eigenschaft des Objekts zu speichern ist.

Die Parameter kommen aus dem Request und wie weiter oben dargelegt, ist ja $this in der Lage Request-Parameter zu parsen bzw. entgegenzunehmen. Z.B. Benutzername und ein Passwort und wenn das valide ist werden Name der Gruppe, Benutzername und Zeitpunkt der Anmeldung in der Eigenschaft $this->SESSION gespeichert. Ein Helper hierzu ist $this->DAL der jedoch erst zur Laufzeit aggregiert wird (Data Access Layer, Benutzername, Gruppe, Passwort müssen ja persistent hinterlegt sein).

Eine dedizierte Methode um Daten in das assoziative Array $this->SESSION einzutragen ist nicht notwendig, das findet innerhalb der control()-Methode statt. Und das ist auch völlig legitim, denn innerhalb dieser Methode ist $this (die FW Instanz) mit sämtlichen Eigenschaften verfügbar.

Und überhaupt empfangen meine Interface-Methoden keine Parameter über den Methodenaufruf. Sie werden ganz und gar erst aufgerufen wenn die existieren, also z.B. so $this->execute('control') (ein wrapper die die Existenz einer Methode feststellt) da ist es gar nicht möglich, weitere Argumente zu übergeben.

Und wie ich schrieb, die Begriffe Getter/Setter sind für mich keine dogmatische sondern eine praktisch latente Angelegenheit. Ich persönlich finde es auch übertrieben, bei jedem instanzverändernden Vorgang "den Setter" definieren zu wollen. So ist der Aufruf $this->dd() ein Dump&Die Getter und wäre mit

$this->dd( nobin => 1 ) formal ein Setter weil mit diesem Schalter der Dump der gesamten Konfiguration unterdrückt wird. Diese liegt in $this->BIN und mit dem Schalter nobin => 1 wird die ganz einfach gelöscht weil sie nach dem Aufruf von Dump&Die sowieso nicht mehr gebraucht wird ($this ist danach tot).

Man könnte ja auch die Instanz für eine eigene Implementierung eines Dumpers rekursiv duchlaufen wobei die Instanz nicht verändert sondern nur die Daten kopiert werden -- man kanns auch übertreiben 😉

MfG