Dynamischer Methodenname?
Tanja 21
- php
Hallo zusammen,
ist es möglich den Methodennamen einer Klasse dynamisch zu wählen, also das man nicht statisch den Namen einer Methode definiert?
Folgender Code, der nicht funktioniert, sollte meine Frage noch verdeutlichen:
class a
{
public $funktionsname="test";
function $this -> funktionsname()
{
echo "test methode";
}
}
$a = new a();
if (method_exists($a,"test"))
{
echo "Es gibt die Methode";
}
Danke für eure Antworten!
echo $begrüßung;
ist es möglich den Methodennamen einer Klasse dynamisch zu wählen, also das man nicht statisch den Namen einer Methode definiert?
Es gibt Variable Functions und Funktionen call_user_func() und call_user_func_array().
echo "$verabschiedung $name";
Soweit ich sehe, bietet dies mir "nur" die Möglichkeit, dynamisch eine Methode anzusprechen, welche statisch mit einen Namen definiert ist. Nicht jedoch dynamisch den Funktionnamen zu definieren, wie in meinem Beispiel...
Oder habe ich etwas übersehen?
echo $begrüßung;
»» ist es möglich den Methodennamen einer Klasse dynamisch zu wählen, also das man nicht statisch den Namen einer Methode definiert?
Es gibt Variable Functions und Funktionen call_user_func() und call_user_func_array().
echo "$verabschiedung $name";
echo $begrüßung;
Soweit ich sehe, bietet dies mir "nur" die Möglichkeit, dynamisch eine Methode anzusprechen, welche statisch mit einen Namen definiert ist. Nicht jedoch dynamisch den Funktionnamen zu definieren, wie in meinem Beispiel...
Ich sah keine Funktionsnamendeklaration nur ungültige Syntax beim Definieren einer Funktion. Es wäre besser gewesen, in Worten zu beschreiben, was du eigentlich vorhast, damit man dir einen konkreteren (gegebenenfalls besseren) Lösungsvorschlag unterbreiten kann.
Dynamischen Quelltext gibt es nicht (außer mit eval() und create_function()). Wenn du Funktionen aufrufen willst, die gar nicht real existieren, gibt es das unter PHP so genannte Method Overloading.
echo "$verabschiedung $name";
Also dann versuche ich nochmal das rüber zu bringen.
ich will eine Funktion haben, die einen Namen trägt. z.B. test.
Alles kein Problem function test() { ....} .
Jetzt soll aber der Name der Funktion abhängig von einer Konstanten sein.... (TEST1 ist eine Konstante mit dem Wert 1)
function test.TEST1
{
...
}
Somit will ich erreichen, dass ich die Funktion test1 ansprechen kann. So geht es nicht. Aber ist in PHP nicht möglich einen dynamischen Funktionsnamen hinzubekommen?
Gruß Tanja
echo $begrüßung;
»» Soweit ich sehe, bietet dies mir "nur" die Möglichkeit, dynamisch eine Methode anzusprechen, welche statisch mit einen Namen definiert ist. Nicht jedoch dynamisch den Funktionnamen zu definieren, wie in meinem Beispiel...
Ich sah keine Funktionsnamendeklaration nur ungültige Syntax beim Definieren einer Funktion. Es wäre besser gewesen, in Worten zu beschreiben, was du eigentlich vorhast, damit man dir einen konkreteren (gegebenenfalls besseren) Lösungsvorschlag unterbreiten kann.
Dynamischen Quelltext gibt es nicht (außer mit eval() und create_function()). Wenn du Funktionen aufrufen willst, die gar nicht real existieren, gibt es das unter PHP so genannte Method Overloading.
echo "$verabschiedung $name";
echo $begrüßung;
Also dann versuche ich nochmal das rüber zu bringen.
ich will eine Funktion haben, die einen Namen trägt. z.B. test.
Nein, das ist nicht dein eigentliches Problem sondern ein Lösungsversuch zu einem.
Somit will ich erreichen, dass ich die Funktion test1 ansprechen kann. So geht es nicht. Aber ist in PHP nicht möglich einen dynamischen Funktionsnamen hinzubekommen?
Alles was PHP bietet, habe ich genannt. Möglicherweise musst du deine ursprügliche Idee einer Lösung an die zur Verfügung stehenden Mittel anpassen. Wenn du dabei Vorschläge haben möchtest, beschreibe dein eigentliches Problem.
echo "$verabschiedung $name";
Hallo,
Afaik gibt's die magic function __call, die auf alle ungültigen Methodenaufrufe reagiert...
mfg, Flo