global
aitee
- php
Hey all,
ich habe einen Beispiel Code in einem Buch gefunden, der total falsch ist ... was mich interessiert ... was genau bedeutet:
global $<variable>;
greetz t
Hallo
Zitat von http://www.usegroup.de/software/phptutorial/variablen.html
Variablen gelten grundsätzlich nur für den Bereich,
in dem sie definiert wurden.
Wenn eine Variable beispielsweise in der Funktion definiert wurde,
gilt sie nur für diesen Bereich.
Um eine Variable zu importieren die z.B. im Hauptprogramm
definiert wurde, gehen Sie folgendermaßen vor:
$a=2;
$b=3;
Sum();
echo $b; // 5
Function Sum () {
global $a, $b;
$b = $a + $b;
}
LG
Aqua
öhh ok immer erstmal alles durchlesen, dann antworten.
also vielen Dank, eure Antworten haben geholfen :)
Bedeutet aber auch, dass ich den Fehler noch immern icht gefunden habe ... und ich suche nun schon seid 2 Wochen gg ;)
hf n greetz t
Hello,
ich habe einen Beispiel Code in einem Buch gefunden, der total falsch ist ... was mich interessiert ... was genau bedeutet:
global $<variable>;
Gegenfrage: was bedeuten dei spitzen Klammern hier?
Sollte das darauf hindeuten, dass für <variable> jeder gültige Variablenname eingesetzt werden darf, dann bedeutet das global, dass diese Variablen im übergeordneten Scope des gesamten Scriptes bekannt gemacht wird und somit auch vom Schlüselwort function nicht verdeckt wird.
Praktisch heißt das, dass sie vom Parser einfach in einer anderen Tabelle eingetragen wird, als die übrigen Variablen, "normale" Scriptvariablen und gekapselte Funktionsvariablen.
Grüße
Tom
Gegenfrage: was bedeuten dei spitzen Klammern hier?
Sollte das darauf hindeuten, dass für <variable> jeder gültige Variablenname eingesetzt werden darf,
jouw ;)
Praktisch heißt das, dass sie vom Parser einfach in einer anderen Tabelle eingetragen wird, als die übrigen Variablen, "normale"
Hmm ... ok nehmen wir an, ich habe folgendes Gerüst:
$variable = "<text>";
function <function_name> ()
{
global $variable;
}
Das macht dann keinen Sinn, oder?
Oder bedeutet das in diesem Fall, Suche die Variable global und nehme den Inhalt?
Hello,
Hmm ... ok nehmen wir an, ich habe folgendes Gerüst:
$variable = "<text>";
function <function_name> ()
{
global $variable;
}Oder bedeutet das in diesem Fall, Suche die Variable global und nehme den Inhalt?
Ja, das heißt es.
Nun probier mal aus, was nach dem Funktionsaufruf mit der Variablen passiert ist, wenn Du sie vorher außerhalb nicht benutzt (deklariert) hast.
Man kann dafür schön die Funktion
array get_defined_vars ( void)
benutzen, um sich mal Klarheit zu verschaffen.
Und dann kannst Du nochmal direkt im Script eine Variable mit global deklarieren und in der Funktion ebenfalls. Was passiert dann damit?
Grüße
Tom
Also ich deklariere ausserhalb meiner Funktionen in der selben Datei meinen DB connect string. Innerhalb jeder Funktion brauche ich diesen natürlich für die Queries. Somit steht innerhalb jeder Funktion:
global $connect;
Soweit so gut ... ich probier mal das get_defined_vars ... aber eigentlich sollte darin nicht der Fehler liegen.
Hello,
generell sollte man überhaupt nicht mit globalen Variablen arbeiten, es sei denn, sie sind _wirklich_ für das gesamte Script relevant. Aber ich dachte, wir hatten das schon?
Man sollte immer mit
Parameterübergabe -> Funktion -> Rückgabewert
Parameter-Array -> Funktion -> Rückgabewert / Rückgabearray
Parameterübergabe -> Funktion -> Rückgabe-Array
Adressübergabe <-> Funktion (-> Rückgabewert)
arbeiten.
Dabei halte ich die Variante mit Parameter-Array und Rückgabe-Array für die eleganteste. Das ist nämlich OOP schon sehr nah. Es setzt aber voraus, dass man nicht an die Speichergrenzen stößt.
Ich denke, dazu gibt es hier (auch von mir) schon viele andere Postings.
Grüße
Tom
Also, ich habe mir mal versucht, das alles auszugeben ... erfolglos :/
Hier mein Script dafür:
$testcounter = 0;
while ($testarray = get_defined_vars ())
{
echo $testarray[$testcounter];
$testcounter++;
}
Ich kriege immer nen Timeout vom Apache glaub ich ...