Daniel: Funktionen dynamisch zusammensetzen ?

Hallo!

Ich habe da einmal eine kluge Frage an alle PHP'ler, ist es auch möglich feste PHP Funktionen dynamisch zusammenzusetzen?

Wenn ich zb eine dynamische Datenbank-Select Abfrage habe dann sollte das zugehörige list()=mysql_fetch_row(); auch dynamisch sein, sonst gibt es natürlich einen Fehler.

Ich habe da einmal etwas über die eval() Funktion gelesen, damit kann ich die PHP Funktionen in einen String schreiben und diesen dann ausführen - das ist an und für sich eine gute Methode, aber geht es vielleicht auch irgendwie anders ?

mfg,
Daniel

  1. hi,

    Ich habe da einmal eine kluge Frage an alle PHP'ler, ist es auch möglich feste PHP Funktionen dynamisch zusammenzusetzen?

    ich verstehe zwar nicht so ganz, was du mit der formulierung meinst, aber ...

    Wenn ich zb eine dynamische Datenbank-Select Abfrage habe dann sollte das zugehörige list()=mysql_fetch_row(); auch dynamisch sein, sonst gibt es natürlich einen Fehler.

    warum verwendest du dann an dieser stelle nicht eher mysql_fetch_assoc(), welches dir ein array mit den spaltennamen als idizes zurückliefert?
    http://www.php.net/manual/de/function.mysql-fetch-assoc.php

    Ich habe da einmal etwas über die eval() Funktion gelesen, [...]ausführen - das ist an und für sich eine gute Methode

    nope.

    "eval is evil"[tm]

    eval führt leicht zu fehlern, ist rechenaufwendiger, und fast immer unnötig. solltest du nicht verwenden, wenn es _irgendwie_ anders geht.

    gruss,
    wahsaga

    1. Hallo wahsage,

      Ich habe da einmal eine kluge Frage an alle PHP'ler, ist es auch möglich feste PHP Funktionen dynamisch zusammenzusetzen?

      ich verstehe zwar nicht so ganz, was du mit der formulierung meinst, aber ...

      Irgendwie war ich mit den Gedanken nicht dabei und wollte eigentlich schreiben ....an alle klugen PHP'ler...  :)

      Wenn ich zb eine dynamische Datenbank-Select Abfrage habe dann sollte das zugehörige list()=mysql_fetch_row(); auch dynamisch sein, sonst gibt es natürlich einen Fehler.

      warum verwendest du dann an dieser stelle nicht eher mysql_fetch_assoc(), welches dir ein array mit den spaltennamen als idizes zurückliefert?
      http://www.php.net/manual/de/function.mysql-fetch-assoc.php

      Ui danke für den Tip, ich habe bis jetzt immer mit dem list und mysql_fetch_row() gearbeitet - das ist aber wie ich gerade bemerke relativ umständlich. Aber bis jetzt bin ich halt damit ausgekommen und habe mir deswegen auch nicht einmal die Mühe gemacht und einmal nach Alternativen zu suchen. DIe mysql_fetch_accoc() Variante ist natürlich das nonplusultra für meinen Fall :)

      Ich habe da einmal etwas über die eval() Funktion gelesen, [...]ausführen - das ist an und für sich eine gute Methode

      nope.

      "eval is evil"[tm]

      ok, $eval = "evil";  *notier*

      eval führt leicht zu fehlern, ist rechenaufwendiger, und fast immer unnötig. solltest du nicht verwenden, wenn es _irgendwie_ anders geht.

      Danke für die Antwort.
      mfg,
      Daniel

      1. Hallo,

        "eval is evil"[tm]
        ok, $eval = "evil";  *notier*

        eval führt leicht zu fehlern, ist rechenaufwendiger, und fast immer unnötig. solltest du nicht verwenden, wenn es _irgendwie_ anders geht.

        Das sehe ich anders. Eval ist genial, wenn die Auswertungsfunktion z.B. selber in einer Datenbank steht. Das nennt man dann wohl auch objektorientiert, oder?

        Man sollte nur die Funktion eval() nochmals selber in einer Hüll-Funktion verpacken, in der man genau die Übergabeparameter (Aufruf und Rückgabe) festlegt (Kapselung der Bezeichner). Das können dann natürlich wieder Arrays sein, damit die "Daten-Dynamik" nicht verloren geht.

        Eval lädt beim Aufruf nämlich sämtliche Variablen, Anweisungen und Funktionen zusätzlich ins Script, ähnlich wie es include() tut. Die stehen dann bis zum Scriptende zur Verfügung. Wenn eine Funktion nun zum zweiten Mal durch eval() geladen (definiert) wird, dann kracht es.

        Grüße

        Tom