MEINUNG: Trigger für Variablen ermöglichen
Tom
- php
Hello,
PHP hat einen integrierten OOP -Dialekt. Das ist schon mal gut.
Nun kam mir in den Sinn, dass es ein sehr nützliche Sache wäre, wenn man intern der Variablentabelle noch zwei Möglichkeiten beibrignen könnte:
CallFunktionBefore Eine Funktion, die beim Zugiff auf eine Variable vor der Veränderung
aufgerufen wird, sofern die Funktion existiert.
Die Veränderung ist vom Ergebnis der Funktion abhängig.
CallFunktionAfter Eine Funktion, die nach der Veränderung von Variablen aufgerufen wird
Das wäre relativ leicht in PHP integrierbar, und würde bisher ungeahnte Möglichkeiten für PHP als Schnittstelle zu Datenbanken und zum Browser (Formulare) ermöglichen. Natürlich müsste die Funktion get_defined_vars() durch die beiden Spalten ergänzt werden und es müsste ien Funktion Set_Function() und delete_function() geben...
Mich würde nur mal Eure Meinung interssieren, bevor ich den Parser "auseinandernehme".
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Halihallo Tom
Nun kam mir in den Sinn, dass es ein sehr nützliche Sache wäre, wenn man intern der Variablentabelle noch zwei Möglichkeiten beibrignen könnte:
Hm. Ja und nein. Obgleich dies sicher einige Vorteile bieten kann, so
ist es doch eine weitere Komplexität die hinzukommt, die der Les- und
Wartbarkeit des Codes alles andere als behilflich ist. Es wäre ein
klarer Vorteil, wenn die Aufgabenstellungen die dieses Feature
benötigen würden nicht auch anders umgesetzt werden könnten, aber das
ist ja nicht der Fall => der Vorteil einer derartigen Erweiterung
halte ich zwar für gegeben, aber ich sehe ihn auch mit grossen
Nachteilen verbunden.
CallFunktionBefore
CallFunktionAfter
Das wäre relativ leicht in PHP integrierbar
Sicher? Ich versuche mal einige Probleme die ich sehe zu behandeln:
Rekursion:
Beispiel:
$t='some value';
CallFunktionBefore("lets_change_t();",&$t)
function lets_change_t() {
if ($t=='reserved value') { die('reserved string!'); }
}
Nun, dies endet in einer Rekursion, die entweder PHP selber, oder
der Programmierer verhindern muss. Für beide ist es nicht immer
einfach... Auf Seiten PHP müsste man entweder ausschliessen, dass
auf die Variable zugegriffen werden darf; oder man müsste eine neue
Art von Funktion einführen, in der keine CallFunktionBefore|-After
Callbacks mehr ausgeführt werden.
Scope:
Falls eine Variable gleichen Namens sowohl global, wie auch lokal
definiert ist, wird es sehr unübersichtlich. Man muss ein klares
Bild davon haben, welcher Callback (CallFunktionBefore|-After) nun
ausgeführt wird und ob überhaupt.
Zuweisung neuer Werte:
Falls bei einem CallFunktionBefore oder -After der Wert der
Variablen verändert wird, wird es dem Programmierer schier
unmöglich sein, dass Programm sinnvoll zu debugen bzw. Fehler zu
finden.
Komplexe Datentypen:
Wie verhält sich dein PHP-Script-Interpreter, falls ein
CallFunktionBefore auf ein komplexer Datentyp (Referenz auf
ein Array z.B.) definiert ist und auf ein Unterelement zugegriffen
wird? (genaugenommen ist das implizit ein Zugriff auf die Variable
selber)
Performance...?
und würde bisher ungeahnte Möglichkeiten für PHP als Schnittstelle zu Datenbanken und zum Browser (Formulare) ermöglichen. Natürlich müsste die Funktion get_defined_vars() durch die beiden Spalten ergänzt werden und es müsste ien Funktion Set_Function() und delete_function() geben...
Ich denke, dass es noch einige technische Schwierigkeiten zu lösen
gibt, die anderer Natur sind. Z.B. das genannte Problem der
Rekursion, oder das der komplexen Objekte.
Als Fazit meinerseits: Ich verzichte gerne auf dieses Feature, denn
jede Aufgabenstellung lässt sich mit herkömmlichen Methoden auch
umsetzen und dies ohne die Les- und Wartbarkeit zu verringern. Auch
wenn es mich etwas mehr Tipparbeit kosten würde (was ich mal unbelegt
im Raum stehen lasse). Andererseits muss ich sagen: wenn es Vorteile
beiten kann (was ich nicht bestreite), warum soll "PHP" es nicht
anbieten? - Es ist ja die Entscheidung des Programmierers, ob er es
zur Anwendung kommen lässt, oder nicht.
BTW: Perl kennt das overload Pragma, mitdem man bereits ein
CallFunktionBefore implementiert werden kann. Hoch lebe Perl wieder
einmal :-)
Viele Grüsse
Philipp
Hello Philipp,
das ist wirklich konstruktive Kritik.
Ich werde da wohl noch eine Weile drüber nachdenken müssen, bis ich anfange zu frickeln... ;-))
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Halihallo Tom
das ist wirklich konstruktive Kritik.
Freut mich sehr!
Ich werde da wohl noch eine Weile drüber nachdenken müssen, bis ich anfange zu frickeln... ;-))
Sowohl darüber nachzudenken, wie auch daran zu frickeln macht
Spass :-)
Hast du vor dein eigenen PHP-Dialekt zu entwickeln? - C001!
Viele Grüsse
Philipp
Hello,
Ich werde da wohl noch eine Weile drüber nachdenken müssen, bis ich anfange zu frickeln... ;-))
Sowohl darüber nachzudenken, wie auch daran zu frickeln macht
Spass :-)
Hast du vor dein eigenen PHP-Dialekt zu entwickeln? - C001!
Naja, es gibt eben einige Denkansätze, wie man den Zugriff auf Daten weiter automatisiern kann.
Das Zusammenspiel von Formular, Datei, Datenbank und Session könnte etwas Automatik gebrauchen.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom