Klassenmethoden Nachträglich definieren
Hallo!!
Ich hab ein problem, und zwar würde ich gern Methoden einer Klasse dynamisch hinzufügen. Vorgestellt hatte ich mir das so in der form: Code:
class Foo Weiß jemand ob das irgendwie möglich ist !?? Gruß pmneo |
AW: Klassenmethoden Nachträglich definieren
Zitat:
PHP-Code:
|
AW: Klassenmethoden Nachträglich definieren
Hallo Feuervogel!
Erstmal danke für deine Antwort, vererbungen sind mir bekannt, macht aber leider in meinem fall so keinen Sinn, da ich ja am ende über meine Orginalklasse zugreifen möchte. Das Problem ist in etwa so: Ich habe eine Klasse EditForm, welche eingabe Masken generiert. Ich habe verschiedene Module, die variert werden können sollen. Momentan sind alle möglichen Felder in der EditForm definiert. Ich würde aber gerne nur die Grund Felder definieren, und die Speziellen felder, die sich auf andere Module beziehen eben in der entsprechenden modul-php datei. Das Problem ist eben, das die EditForm Klasse bereits über 8T Zeilen hat, und so könnte ich das etwas aufteilen. Gruß |
AW: Klassenmethoden Nachträglich definieren
Man kann in PHP keine Methoden nachträglich hinzufügen!!!
(zum Glück) |
AW: Klassenmethoden Nachträglich definieren
und ein design, welches eine 8000 zeilen lange klasse erfordert sollte man nochmals überdenken...und zwar grundsätzlich.
|
AW: Klassenmethoden Nachträglich definieren
Überdenken is leicht gesagt, die Klasse wurde Komplexer als zuerst erwartet.
Daher suche ich eben einen weg dies einfach aufzuteilen. Danke schon mal & Gruß |
AW: Klassenmethoden Nachträglich definieren
Es geht zwar nicht direkt, aber man kann durchaus soetwas in der Art nachbasteln (auch wenn ich es ebenfalls für einen Entwurfsfehler halte, aber möglicherweise kann es doch in gewissen Sitationen hilfreich sein).
Entweder man hängt sie ein, oder macht es absolut dynamisch und spontan PHP-Code:
PHP-Code:
PHP-Code:
|
AW: Klassenmethoden Nachträglich definieren
Mir fällt grade noch was ein. Wenn Du unbedingt die Methoden im herkömmlichen Stil aufrufen möchtest (also $instanz->methode($parameter);), dann solltest Du eventuell die gesammte Klasse durch ein eval jagen. Also, anstatt dass Du die Datei mit der eigentlichen Klasse mit include oder require einbindest, lädst Du einfach den gesamten Klassenquelltext in eine Variable (etwa mit file_get_contents()) und führst diese mit eval aus. Die Klasse ist dann genauso definiert, als hättest Du sie mit include oder require eingebunden.
Vorteil ist aber, dass Du die Zeichenkette erweitern kannst. Du könntest etwa an eine bestimmte Stelle eine Markierung in die Klasse setzen und diese dann zur Laufzeit mit weiteren Methodendeklarationen ersetzen. Dann hast Du wirklich eine dynamische Klasse gebaut. ABER: Das Ganze dürfte wohl aufwendiger/teurer sein, als die Klasse statisch einzubinden, also überlegs Dir gut ob das wirklich sein muss, oder ob Du vielleicht zu viel Funktionalitäten in eine Klasse stopfst die Du besser auf mehrere Klassen umlegen solltest. |
AW: Klassenmethoden Nachträglich definieren
Danke für deine Hilfe!
Dein Beispiel hat nur einen kleinen Fehler ;) und zwar hast du in der function das $this vergessen! Das werde ich mir auf jedenfall im hinterkopf behalten, aber ich denke ich werde die Klasse doch umdesignen und aufteilen, hat ja letztendlich wenig sinn so ;) Trotzdem VIELEN Dank! p.s. das mit eval ist auch keine schlechte idee, allerdings ist das wirklich zu aufwendig! Gruß PHP-Code:
|
AW: Klassenmethoden Nachträglich definieren
Stimmt, selbstverständlich muss die aufzurufende Funktion das $this auch erwarten. Kleiner Flüchtigkeitsfehler.
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 10:31:46 Uhr. |
Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.