Mailinglisten-Archive |
Michael Borchers wrote:
> Ich bin auf der Suche nach einem Namen für ein Systemeigenes superglobals Array, von der Bedeutung her wie $GLOBALS. Welche Namen wählt ihr für ähnliche Zwecke?
>
> Z.B. benutzt Phorum den Namen $PHORUM mit z.B. $PHORUM['data'] usw.
>
> Ich möchte aber keinen Systemspezifischen Namen haben.
>
> Hier ein paar Favoriten und Ideen:
>
> $SYS;
> $COMMON;
> $APP;
> $ENV;
> $PHP;
> $NET;
> $OS;
> $APL;
>
> $_GLOBALS;
> $_DATA;
> $SRC;
>
> What do you think?
Ich thinke, dass dieses Konzept generell nicht so prima ist, da deine
Variable (ausversehen) überschrieben werden kann, ohne dass du es
merkst. Vielleicht weil du oder ein anderer Entwickler an deinem System
sich gedacht hat, dass er eine Variable mit diesem Name ja gerade mal
benutzen möchte und nicht daran denkt, dass diese bereits existiert.
Besser ist es eine rein statische Klasse zu definieren:
class Config
{
public static get($name)
{
return 'whatever';
}
}
Und dann deine Werte immer per
Config::get('varname')
abzurufen.
Das tolle ist: Wenn jetzt irgendwer mein, er müsste auch eine
Config-Klasse definieren, dann kommt sofort eine Fehlermeldung, du
weisst genau wo der Fehler ist und wunderst dich nicht erst stundenlang
wo diese komischen Effekte herkommen. Und dann kannst du deine Klasse
umbennen oder einen Namespace vergeben und dein Problem ist gelöst.
Das Singletonprinzip auf sowas anzuwenden halte ich für overkill, da dem
Programm überahupt keinen Vorteil dadurch zukommt. Klar, man kann
arrayAccess implementieren, aber das macht die Sache nicht einfacher,
denn man muss ja sowieso immer eine Funktion (getInstance) aufrufen dann
dann noch zusätzlich arrayAccess anwenden, was in einem Schritt nicht
möglich ist, wodurch man in jedem Fall erstmal eine Zwischenvariable
braucht und... also die Lösung da oben ist simpler und effizienter :-).
Yannik
php::bar PHP Wiki - Listenarchive