ich will alle Variablen in einer Funktion ansprechen
tobi b
- php
hallo
Globale Variablen werden in einer Funktion bekanntlich erst gültig, wenn man die in der Funktion z.B. schreibt:
global var;
ich will aber auf alle Variablen zugreifen können, ohne diese immer so deklarieren zu müssen.
gibt es da eine möglichkeit?
Danke schon mal.
Probier mal Deine Variablen $_SERVER['Vorname'] u.s.w. zu benennen. Diese sind dann global verfügar.
cu, Mario
hi,
Probier mal Deine Variablen $_SERVER['Vorname'] u.s.w. zu benennen. Diese sind dann global verfügar.
entweder meintest du das gleiche wie Andreas, oder du hast die vordefinierten superglobalen arrays nicht verstanden.
gruss,
wahsaga
Hallo!
Globale Variablen werden in einer Funktion bekanntlich erst gültig, wenn man die in der Funktion z.B. schreibt:
global var;
Ja, und das ist durchaus sinnvoll.
ich will aber auf alle Variablen zugreifen können, ohne diese immer so deklarieren zu müssen.
Eunktion soll ja eine bestimmte Aufgabe kapseln, das heißt Du hast eine feste Schnittstelle, die Parameter, und einen genau definierten Rückgabewert. So kanst Du die Funktion intern, oder das Programm drum herum verändern, ohne dass dies Auswirkungen aufeinander hat.
Wenn Du in der Funktion mit den globalen Variablen arbeitest, geht dieser Vorteil der Kapselung verloren.
gibt es da eine möglichkeit?
Ja, spreche die Variablen über $GLOBALS['var'] an.
Grüße
Andreas
Hallo
Globale Variablen werden in einer Funktion bekanntlich erst gültig, wenn man die in der Funktion z.B. schreibt:
global var;
Ja, und das ist durchaus sinnvoll.
Noch eine Empfehlung zur Verwendung von globalen Variablen:
Verwende so wenige wie möglich - und nur so viele wie notwendig.
Möglichst viele Deiner Funktionen sollten ohne globale Variablen auskommen.
Freundliche Grüsse,
Vinzenz
Hallo Vinzenz
Verwende so wenige wie möglich - und nur so viele wie notwendig.
Möglichst viele Deiner Funktionen sollten ohne globale Variablen auskommen.
neugierig guck -> Warum eigentlich?
Gruß aus Berlin!
eddi
Hallo XaraX
Verwende so wenige wie möglich - und nur so viele wie notwendig.
Möglichst viele Deiner Funktionen sollten ohne globale Variablen auskommen.neugierig guck -> Warum eigentlich?
Guck mal auf diese interessante Diskussion: http://discuss.fogcreek.com/joelonsoftware/default.asp?cmd=show&ixPost=43421 :)
Freundliche Grüsse,
Vinzenz
Hallo!
Verwende so wenige wie möglich - und nur so viele wie notwendig.
Möglichst viele Deiner Funktionen sollten ohne globale Variablen auskommen.neugierig guck -> Warum eigentlich?
Bei kleinen Scripten ist das relativ egal, das ist ja eigentlich die Stärke von PHP dass man recht schnell ohne großartige Porgrammierkenntnisse was auf die Beine stellen kann. Aber eben diese Eigenschaft kehrt sich in größeren Projekten um in einen großen Nachteil. Je größer ein Projekt, desto schwieriger wird es den Überblick zu behalten, wenn man seine Funktionalitäten nicht vernünftig vom Rest des Programms abkapselt, dann werden Änderungen immer schwieriger, und vor allem haben Änderungen in diesem Fall oft Auswirkungen auf andere Programmteile, an die man dann möglicherweise nicht denkt, und irgendwann tauschen komische Fehler auf die sehr schwer zu finden sind.
Wenn eine Funktion/Methode eine feste Schnittstelle hat, also seine Daten nur über Parameter bekommt, und einen genau definierten Rückgabewert hat, kannst Du wer weiß was für akrobatische Änderungen in der Funktion vornehmen, was aber keinerlei Auswirkungen auf den Rest des Projektes hat. Der übrige Teil des Programms kennt nur die Schnittstelle, weiß aber nicht was unter der Haube passiert. Genauso kannst Du anders herum Teile des Programms ändern, die die Funktion verwenden, Du kannst Variablen umbenennen, oder anders organisieren... ohne dass dies Auswirkungen auf irgendwelche Funktionen hat, weil die ja über feste Schnittstellen angesprochen werden.
Wenn Funktionen sich allerdings auf alle möglichen anderen Teile des Programms verlassen, musst die alle diese Funktionen entsprechend ändern wenn Du irgendwas an diesen Teilen ändern willst. Und wenn Du das ein halbes Jahr später machst wird es langsam schwierig sich noch an alle Verknüpfungen zu erinnern, genaus ist es schwierig für andere Programmierer die später mal neu dazu kommen.
Und auch wenn Du neue Funktionalitäten implementierst läufst Du ständig Gefahr irgendwelche Voraussetzungen für andere Funktionen zu verändern...
So entstehen ohne Ende unnötige Seiteneffekte, die sich möglicherweise erst viel später in einer ungünstigen Konstellation auswirken...
Grüße
Andreas