Xerxes
25-01-2003, 21:09
Habe ein kleines Problem mit dem Geltungsbereich von Variablen in Funktionen zusammen mit global.
Und zwar habe ich mir mal eine Funktion geschrieben, die mir Variablen aus dem $_REQUEST in mein Script importiert.
Das ganze Funktioniert eigentlich auch ganz gut (siehe Script).
Mein Problem: Rufe ich die Funktion import_vars() in einer Funktion auf, hab ich die Variablen nicht.
Wenn ich mich richtig an den Geltungsbreich von variablen erinner, stehen mir die von import_vars() importierten Variablen nur in dieser Funktion selbst und auf Globaler ebene zur Verfügung, oder?
Gibt es eine Möglichkeit, dass die Variablen auch in einer anderen Funktion nutzen kann, ohne sie dort alle manuell per global $var1, $var2, ...; reinzuholen? Die Anzahl der benötigten Variablen kann nämlich manchmal recht groß sein....
$import_vars = array(
'var1',
'var2',
);
// Funktioniert super:
import_vars( $import_vars );
echo $var1 . $var2;
//Funktioniert nicht:
foo( $import_vars );
function foo( &$vars )
{
import_vars( $vars );
echo $var1 . $var2;
}
//
// Imports all variabless contained in $var_names from the $_REQUEST array
//
function import_vars( $var_names )
{
for( $i = 0; $i < count( $var_names ); $i ++ )
{
global ${$var_names[$i]};
${$var_names[$i]} = isset( $_REQUEST[$var_names[$i]] ) ? $_REQUEST[$var_names[$i]] : NULL;
}
return true;
} // end function import_vars()
Und zwar habe ich mir mal eine Funktion geschrieben, die mir Variablen aus dem $_REQUEST in mein Script importiert.
Das ganze Funktioniert eigentlich auch ganz gut (siehe Script).
Mein Problem: Rufe ich die Funktion import_vars() in einer Funktion auf, hab ich die Variablen nicht.
Wenn ich mich richtig an den Geltungsbreich von variablen erinner, stehen mir die von import_vars() importierten Variablen nur in dieser Funktion selbst und auf Globaler ebene zur Verfügung, oder?
Gibt es eine Möglichkeit, dass die Variablen auch in einer anderen Funktion nutzen kann, ohne sie dort alle manuell per global $var1, $var2, ...; reinzuholen? Die Anzahl der benötigten Variablen kann nämlich manchmal recht groß sein....
$import_vars = array(
'var1',
'var2',
);
// Funktioniert super:
import_vars( $import_vars );
echo $var1 . $var2;
//Funktioniert nicht:
foo( $import_vars );
function foo( &$vars )
{
import_vars( $vars );
echo $var1 . $var2;
}
//
// Imports all variabless contained in $var_names from the $_REQUEST array
//
function import_vars( $var_names )
{
for( $i = 0; $i < count( $var_names ); $i ++ )
{
global ${$var_names[$i]};
${$var_names[$i]} = isset( $_REQUEST[$var_names[$i]] ) ? $_REQUEST[$var_names[$i]] : NULL;
}
return true;
} // end function import_vars()