Funktion oder Methode erweitern
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
aufrufen
code
definierte funktion
ersten befehl
erweitern
funktion
gedankengang
gleichen namen
grundfunktion
horizont
idee
klasse
methode
parameter
praktische verwendung
programmierung
theorie
url
vererbung
zugreifen
-
Gibt es eine Möglichkeit, eine Funktion oder eine Methode zu erweitern? Mir ist klar, dass man die bereits definierte Funktion oder Methode als ersten Befehl der neuen Funktion oder Methode aufrufen kann, aber ich hätte es gerne so, dass die verwendeten lokalen Variablen der Funktion oder der Methode auch in dem Erweiterungsteil verfügbar sind.
Eine praktische Verwendung habe ich nicht, es geht mir also nur um die Theorie. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Nein, das widerspräche den bisherigen Regeln der Programmierung. Lokale Variablen sind nunmal lokal und eine Funktion kann nur insofern erweitert werden, als dass man sie selbst bearbeitet. Von außen kann man nicht darauf zugreifen. Außerdem würde das ein Vorkompilieren bedeuten, was bei PHP & Co. nicht gemacht wird.
Es widerspricht der Objektorientierung, weil eine (geerbte) Funktion nicht geändert, höchstens überschrieben werden kann.
Es widerspricht der Idee der Linearschrift, nach der Befehle dort stehen müssen, wo sie ausgeführt werden. -
Es gibt die möglichkeit, das eine Funktion eine andere Implementiert, somit kannst du einmal alle Grundfunktionen erstellen, und eine andere Funktion erweitert diese.
Bei Java geht dies auf jedenfall, bei php gibt es ein keyword namens extends. (Sollte in etwa das gleiche bewirken) -
Seit PHP 5 kann man Methoden auch überladen. D.h. das die Methode den gleichen Namen besitzt, jedoch eine andere Anzahl Parameter übergeben werden. Einfach "Funktionen Überladen PHP" bei Google. Weiss nicht genau ob das hilft aber kannst du dir ja mal anschauen.
-
das-koenigreich schrieb:
Gibt es eine Möglichkeit, eine Funktion oder eine Methode zu erweitern? Mir ist klar, dass man die bereits definierte Funktion oder Methode als ersten Befehl der neuen Funktion oder Methode aufrufen kann, aber ich hätte es gerne so, dass die verwendeten lokalen Variablen der Funktion oder der Methode auch in dem Erweiterungsteil verfügbar sind.
Eine praktische Verwendung habe ich nicht, es geht mir also nur um die Theorie.
Das was du meinst, nennt sich Vererbung und ist in der objektorientierten Programmierung eine allgemeine Funktionalität. Dabei können Klassen um Methoden erweitert bzw. bestehende Methoden überschrieben (also neu definiert) werden. Infos dazu findest du im PHP Manuel - Objekt-Vererbung. Hope this helps! -
wagnerm schrieb:
Nope. Ich will Methoden und Funktionen erweitern, keine Klassen. Durch die Vererbung von Methoden und Eigenschaftsfähigkeiten von Klassen bin ich aber auf diese Idee gekommen .
Das was du meinst, nennt sich Vererbung und ist in der objektorientierten Programmierung eine allgemeine Funktionalität.
Edit: Das meine ich etwa so:function a() { $var = "hallo"; } function b() extends a { echo $var; }
Beitrag zuletzt geändert: 17.3.2011 16:27:34 von das-koenigreich -
Ok, dass das auch mit Funktionen funktioniert, habe ich nicht gewusst. Das hat wohl meinen OOP-Horizont überschritten.
Danke jedenfalls, dass du deinen Gedankengang mit uns teilst. -
das-koenigreich schrieb:
Eine praktische Verwendung habe ich nicht, es geht mir also nur um die Theorie.
Die Frage für was für einen Fall du das benötigst, ist dann schon mal unnötig.
das-koenigreich schrieb:
Nope. Ich will Methoden und Funktionen erweitern, keine Klassen. Durch die Vererbung von Methoden und Eigenschaftsfähigkeiten von Klassen bin ich aber auf diese Idee gekommen .
Edit: Das meine ich etwa so:function a() { $var = "hallo"; } function b() extends a { echo $var; }
Soetwas gibt es nicht.
Ich wüsste auch nicht, für was das Ganze gut sein soll... -
wagnerm schrieb:
Ähm, ich weiß nicht ganz ob das ernst gemeint ist, also tue ich mal lieber so: Den Code habe ich mir ausgedacht, um zu zeigen, was ich suche. Würde dieser Code funktionieren und ich wüsste das, hätte ich das Thema nicht eröffnet.
Ok, dass das auch mit Funktionen funktioniert, habe ich nicht gewusst. Das hat wohl meinen OOP-Horizont überschritten. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage