Mailinglisten-Archive |
----- Original Message ----- From: "Henning Heil" <lists at h-quadrat.com> To: "deutschsprachige PHP-Mailingliste" <php at phpbar.de> Sent: Thursday, December 11, 2003 7:55 PM Subject: [php] Namensräume > Servus! > > Grübele gerade etwas über einer function die ich include, vereinfacht: > > loglib.php: > function writelog (user, action) { > db-connect($db_host bla bla); > schreibe logentry (user, action); > db-close; > } > > da die function überall gleich ist, wollte ich sie einfach includen und > immer gleich benutzen, logo. > > In jedes der betreffenden Skripte include ich ebenfalls eine > config-Datei, in der u.a. die db-Zugriffsparameter stehen, Bsp.: > > config.php: > $db_host = "localhost"; > $db_name = "meinedb"; > > merkwürdigerweise scheinen diese Variablen in der function nicht gültig > zu sein (in den 'Hauptskripten freilich schon')! Funktionen haben, genau wie Klassen und deren Methoden, einen eigenen Namensraus. Der Variablensscope (Sichtbarkeitsbereich) ist als eingeschränkt. > Wer kann helfen? Config-Variablen anders deklarieren? Alle an function > übergeben? Doch. Uebergebe das was die Funktion braucht als Argument (kann auch ein Array sein :). Alternativ kannst du Konstanten definieren. Zu guter letzt bleibt 'global' ueber. function foo(){ global var1, var2; .... } Das 'global' importier/exportiert bzw. legt die Variable an. Aber global moechte man nicht benutzen weil man den globalen Variablenraum nicht 'verschmutzen' will bzw. sich garnicht darauf verlassen was da drin steht. Zumind. nicht an eigenen Variablen Gruss Joerg
php::bar PHP Wiki - Listenarchive