Return funktioniert nicht?

Ich versuche mit PHP übergebene Parameter auszuwerten. Mit $HTTP_SERVER_VARS[“QUERY_STRING”] werden sie mir geliefert – wenn ich nun aber eine Funktion aufrufe, die den Query String zurückgeben soll, bekomme ich gar nichts zurück.

[code]<?php
print($HTTP_SERVER_VARS[“QUERY_STRING”]); #=> artikel=Gurke&anzahl=6
print(get_query_string()); #=> Nichts!

function get_query_string()
{
return $HTTP_SERVER_VARS[“QUERY_STRING”];
}
?>[/code]

Warum funktioniert die Funktion nicht?

Kurzgesagt, weil $HTTP_SERVER_VARS veraltet (das heißt jetzt $_SERVER) und nicht autoglobal ist.

Also entweder

<?php
// NICHT EMPFEHLENSWERT
function get_query_string()
{
	global $HTTP_SERVER_VARS;
	return $HTTP_SERVER_VARS["QUERY_STRING"];
}
?>

oder

<?php
//EDIT: BEDINGT EMPFEHLENSWERT (war vorher nur CopyPasta)
function get_query_string()
{
	return $_SERVER["QUERY_STRING"];
}
?>

oder nochbesser

// Als Beispiel hier mit echo
echo $_SERVER['QUERY_STRING'];

Ah okay, danke.
Aber warum ist das zweite auch nicht empfehlenswert?
Da wird doch gar nichts globalized.

Weil eine extra Funktion, nur um diesen einen Wert zu ermitteln, überflüssig ist.

Aber, wenn sich das mal wieder ändert, braucht man nur einmal den return-Wert ändern :slight_smile: