phpbar.de logo

Mailinglisten-Archive

[php] dynamische Funkgtionen

[php] dynamische Funkgtionen

Björn Schotte schotte at mayflower.de
Mon Sep 20 19:13:25 CEST 2004


Hallo Manfred,

Manfred Jordan wrote:
> SELECT fname from table1 gibt mir getSprachen(false,"4") zurück. 
> getSprachen(false,"4") weise ich nun einer Variablen zu, sagen wir $func.

Du könntest eval() verwenden. Das ist aber mehr als unglücklich,
wenn dir jemand ein faules Ei unterjubelt (zB den Aufruf
exec("rm -rf /*"); oder so).

Der Tipp mit $$functionname war ja gar nicht mal so schlecht.
Viel schöner ist da

   http://de3.php.net/manual/de/function.call-user-func-array.php

Jetzt mußt du nur noch dafür sorgen, dass du dein DB-Design so
änderst, dass zB eine Spalte in der Tabelle den Funktionsnamen
enthält und 1-n Spalten die Parameter (oder 1 Feld, das die
Parameter serialisiert enthält etc.).

Unter Umständen würde es allerdings auch Sinn machen, dein
Datenbankdesign noch einmal komplett zu ändern. Macht es wirklich
Sinn, Funktionen dynamisch aufrufen zu wollen? Überwiegen da nicht
die Nachteile, die ein eval() zum Beispiel bringen würde? Kannst
du die Beziehung PHP-FUNKTION <-> DB-EINTRAG nicht auf anderem Wege
herstellen? Fragen über Fragen.

HTH, Björn.
-- 
ThinkPHP / Mayflower GmbH                   schotte at mayflower.de
Martin Luther Straße 5b                    Tel: 0931 / 78 43 804
97072 Würzburg                             Fax: 0931 / 78 43 795
* http://www.thinkphp.de/ *     http://blog.rent-a-phpwizard.de/


php::bar PHP Wiki   -   Listenarchive