Variable oben im Script als Superglobal setzen
Sven Raumann
- php
Hallo!
Ich hab eine Funktionen geschrieben in denen ich immer eine bestimmte Variable brauche ich möchte dies Variabel oben im Script auf Superglobal deklarieren um auch in meiner Funktion Zugriff darauf zu haben bloss ich kriege es nicht hin?
Mit global $dbh = get_wert(); oder $GLOBALS = $dbh = get_wert();
geht es nicht?
Ansonsten muß ich in jeder Funktion Meine Variable $dbh = get_wert(); schreiben. Und über die Funktion wollte ich die Variable auch nicht übergeben.
Weiß einer wie es geht?
abend,
du weißt, dass du innerhalb einer funktionj mittels
global $myVar auf bestimmte variablen zugreifen kannst ?
wozu superglobal ?
mfg,
(tanz das)
Z.N.S.
du weißt, dass du innerhalb einer funktionj mittels
global $myVar auf bestimmte variablen zugreifen kannst ?
wozu superglobal ?
Nur dann muß ich jeder Funktion immer folgendes schreiben:
global $dbh;
Wenn ich die Variable als supervariable setze habe ich ein paar Zeilen Code gespart ;-)
Wenn ich die Variable als supervariable setze habe ich ein paar Zeilen Code gespart ;-)
und ein paar Variablen-bezeichnugen weniger.
Warum nicht:
$superglobals;
function machSuperoberglobal($index, $wert)
{
global $superglobals;
$superglobals[$index] = $wert;
}
function Superoberglobal($index)
{
global $superglobals;
return $superglobals[$index];
}
machSuperoberglobal("varname","wert");
function xxx ()
{
echo Superoberglobal("varvame");
}
... und so weiter
MFG
Ich versteh das nicht wirklich was Du damit bewirken willst? Wieso schreibst du Variablen in Array und wie lese ich die wieder aus dem array aus? Ich will doch nur das die Variable im ganzen Script superglobal ist.
$superglobals;
function machSuperoberglobal($index, $wert)
{global $superglobals;
$superglobals[$index] = $wert;}
function Superoberglobal($index)
{global $superglobals;
return $superglobals[$index];}
machSuperoberglobal("varname","wert");
ist "varname" nicht falsch? schliesslich ist das dort doch ein string da ghört doch eine variable rein.
und wieso soll ich den key und den wert übergeben ich will wenn doch nur die varaibale übergeben.
vielleicht kannst du das beispiel noch weiter verdeutlichen damit ich auch verstehe was daran einfacher sein soll?
danke!
gruss sven
Hallo!
$superglobals;
function machSuperoberglobal($index, $wert)
{global $superglobals;
$superglobals[$index] = $wert;}
function Superoberglobal($index)
{global $superglobals;
return $superglobals[$index];}
vielleicht kannst du das beispiel noch weiter verdeutlichen damit ich auch verstehe was daran einfacher sein soll?
Einfacher. Es war doch die Rede davon, dass du kein global in eine Funktion einbauen willst.
Du brauchst eine variable die superglobal sein soll namens: "globvar"
anstatt $globvar="Das ist der Wert der Variablen" einzugeben kannst du dann tippen:
machSuperoberglobal("globvar","Das ist der Wert der Variablen");
nun wird dem Array $superglobals["globvar"] der Wert "Das ist der Wert der Variablen" gegeben.
nun Hast du eine function x()
function x()
{
echo Superoberglobal("globvar");
/* Superoberglobal gib nun mit return $superglobal[$index] ($index in dem Fall = "globvar") $superglobals["globvar"] zurück */
}
Wie du siehst ist es nicht nötig hier irgend ein "global" in die Funktion einzubauen
Ich hoffe es ist dir jetzt klar, andernfalls verwende parameter um der Funktion die Variablen zu geben.
x($dieVariableMitDessenWertInDerFunktionGearbeitetWerdenSoll);
gruß Robert
Moin!
du weißt, dass du innerhalb einer funktionj mittels
global $myVar auf bestimmte variablen zugreifen kannst ?
wozu superglobal ?Nur dann muß ich jeder Funktion immer folgendes schreiben:
global $dbh;
Das ist sowieso mieser Programmierstil. Man kann genausogut ohne globale Variablen auskommen.
Wer in einer Funktion globale Variablen benutzt, erzeugt sich selbst Probleme, die er besser vermeiden sollte. Alle Daten einer Funktion sollten als Parameter in den Klammern von außen in die Funktion übergeben werden, und alle Ergebnisse der Funktion sollten entweder als Rückgabewert, oder über in den Parametern als Referenz definierte Variablen zurückgegeben werden.
Wenn es darum geht, Konfigurationsdaten global bekannt zu machen: Nimm Konstanten! Die kann man genau einmal definieren, und sie sind dann für den ganzen Rest des Skriptes in allen Funktionen verfügbar und können von keiner Funktion "aus Versehen" geändert werden.
Wenn ich die Variable als supervariable setze habe ich ein paar Zeilen Code gespart ;-)
Wenn du auf das Konzept, alles global haben zu wollen, verzichtest, hast du ein paar Zeilen besseren Code.
- Sven Rautenberg
Ich habe ja gesagt das es mit global scheisse ist! Meine Frage war ja wie ich es besser lösen kann.
Unter Konstanzen was verstehst Du da runter? static $variable ???
Aber meines Wissens sind static Variablen nur innerhalb der Funktion statisch.
Moin!
Ich habe ja gesagt das es mit global scheisse ist! Meine Frage war ja wie ich es besser lösen kann.
Du willst superglobale Variablen haben. Und die gibts in PHP nicht.
Damit wäre dieses Thema erledigt, die Frage beantwortet. :)
Unter Konstanzen was verstehst Du da runter? static $variable ???
Unter Konstanten verstehe ich "Konstanten" im Sinne der PHP-Dokumentation auf php.net (sowie im Sinne aller anderen mir bekannten Programmiersprachen).
Und da php.net keinen Befehl "static" auflistet, kann ich das vermutlich nicht gemeint haben.
Aber meines Wissens sind static Variablen nur innerhalb der Funktion statisch.
Da es keine static Variablen gibt, können diese auch nicht innerhalb einer Funktion statisch sein.
Es gibt da auch eine Suchfunktion, die du mal ausprobieren solltest.
- Sven Rautenberg
Hi Sven
Ich hab eine Funktionen geschrieben in denen ich immer eine bestimmte Variable brauche ich möchte dies Variabel oben im Script auf Superglobal deklarieren um auch in meiner Funktion Zugriff darauf zu haben bloss ich kriege es nicht hin?
Mit global $dbh = get_wert(); oder $GLOBALS = $dbh = get_wert();
geht es nicht?Ansonsten muß ich in jeder Funktion Meine Variable $dbh = get_wert(); schreiben. Und über die Funktion wollte ich die Variable auch nicht übergeben.
Weiß einer wie es geht?
Du könntest ja einen bereits vorhandenen Superglobalen Container nehmen, zb $_POST[""] oder S_GET[""]...etc oder wenns über mehrere Seiten verfügbar sein sollte "schnell mal" eine Session öffnen und darin die Daten ablegen, die sind dann wirklich überall verfügbar.