phpbar.de logo

Mailinglisten-Archive

Re: [php] Namensräume

Re: [php] Namensräume

Joerg Behrens behrens at takenet.de
Fre Dez 12 09:12:34 CET 2003


----- 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