get per function einbinden

mini_xs

Mitglied
Hallo!

Möchte meine Scripts in functionen auslagern. Dabei habe ich ein Problem, denn ich möche soetwas definieren:
PHP:
function get()
{
$link = $HTTP_GET_VARS["link"];
};

damit will ich auch meine Get befehle auslagern um später mit ihnen weiterarbeiten zu können.

Habe später eine function in diesem stil:
PHP:
function site1($link) 
{
	if (empty($link)) { 
$link = "0.txt";
}
	else	{
$link = "$link".".txt"; 
}; 
					  	$daten = file("configurator/files/$link"); 
						$ueber = $daten[0];
						$text = $daten[1];
						$rechts = $daten[2];
echo "$ueber";
};

Die functionen liegen in einer php Datei die includiert wird und in der eigentlichen Seite werden die functionen aufgerufen.

get()

site1($link)


Eigentlich sollte die erste function doch $link den Wert zuweisen den ich mit der URL weitergegeben habe.
Aber es läuft nicht.

Bin sehr dankbar für Vorschläge.

MfG,
Stefan Greif
 
Deine Funktion kennt die Variable HTTP_GET_VARS ja gar nicht, Du musst Sie also irgendwie übergeben und dafür gibt es 2 Möglichkeiten:
1. Du übergibst Sie direkt:
PHP:
function get($postvars)
{
 	$link = $postvars["link"];
}
/*die Funktion rufst Du dann so auf:*/
get($HTTP_GET_VARS);

das ist auch die bessere Methode die 2. Methode ist, Du machst Variablen in der Funktion einfach global:
PHP:
function get($postvars)
global $HTTP_GET_VARS["link"];
{
 	$link = $HTTP_GET_VARS;
}
das ist aber nicht so toll und habe ich Dir auch nur anstandshalber gezeigt :-)

Cu Major
 
mal eine Frage: wieso ist das mit global bitte "nicht so toll"

a) seh ich keinen Sinn darin, eine Variable die sich niemals ändert jedesmal neu zu übergeben
b) bläht das doch den Funktionsaufruf nur unnötig auf

um erweiterbarkeit gehts ja wohl nicht bei $_GET (außer man möchte zufällig auch mal $_POST anstatt $_GET haben)

irgendwie seh ich den Sinn nicht :confused:
 
mal eine Frage: wieso ist das mit global bitte "nicht so toll"

Naja beim globalisieren einer Variablen ist das nicht weiter schlimm.
Doch wenn du viele Variablen in einer Funktion global machts geht das auf die Performance.

Ich weis ja nicht ob du abwärts kompatible sein musst. Wenn nicht kannst du inerhalb deiner Funktion auf die bereits Globale Variable $_GET['link'] zugreifen.
Und dann bitte auch nicht vergessen das $link in deiner Funktion ja dann auch lokal ist. Eine weitere Lösung wäre.

PHP:
$link=get($HTTP_GET_VARS["link"]);

site1($link);

function get($get){
 return $get;

}
oder eben
PHP:
link=get();
site1($link);
function get(){
 return $_GET["link"];

}
 
Die globalen Variablen sind eine Sicherheitslücke, da schlaue User diese per URL oder dergleichen verändern und zu ihrem Vorteil nutzen "könnten".

Auch wenn es abwärtskompatibel sein soll, kann man $_GET[''] verwenden:

PHP:
if(!isset($_GET))
{
	$_GET = $HTTP_GET_VARS;
}

Genauso geht es mit $_POST[''].
Falls ihr $_REQUEST[''] benutzt habt, müsst ihr dieses bei alten Versionen selbst erstellen, das sieht dann ungefähr so aus:

PHP:
$_REQUEST= array_merge(&$HTTP_ENV_VARS,&$HTTP_GET_VARS,&$HTTP_POST_VARS,&$HTTP_COOKIE_VARS,&$HTTP_SESSION_VARS);

(außer man möchte zufällig auch mal $_POST anstatt $_GET haben)

Dann nimmst du einfach $_REQUEST.
 
sorry, hab mich wohl etwas undetlkich ausgedrückt, die Verwendung von $_GET und $_POST ist mir auch klar, war vielleicht auch ein schelchtes Beispiel die hier gegeben Funktion, mir gings nur einfach allgemien, warum "globalisieren" einer Variable schelcht ist in Funktionen, Performance ist ja schonmal eine Erklärung, wobei es für mich ekinen Sinn ergibt warum, aber selbst wenns so ist, akzeptier ichs ja ;)
 
Hallo, das Verwenden von globalen Variablen ist ein schlechter Programmierstil. Funktionen sollten in sich geschlossen sein, um sie mehrfach verwenden zu können - auch in anderen Projekten. Deshalb übergibt man alle für die Funktion wichtigen Variablen und setzt nicht voraus, dass außerhalb der Funktion schon eine Variable existiert, die via "global" verfügbar gemacht werden kann.

mfg, snuu
 
soweit waren wir ja schon :rolleyes:

sorry, aber "schelcht" ist für mich kein Grund, aber wie gesagt, ich akzeptier ja die Meinung, aber nur weils schlecht ist, bruach ichs ja net ändern, komme mit gobalen Definitionen sehr gut zurecht, weder isses langsam noch störts sonst irgendwie. Naja, wie gesagt, vergesst das außer es hat noch jemand einen grund, wie dass es bei PHP5 net mehr unterstützt werden würde. also ein wichtiger ;)

sorry, net bös nehmen, aber ... naja, wie gesagt, fahre damit bisher ganz gut und das andere würde den Funktionsaufruf teilweise zu stark aufblähen ;)
 
Naja, wenn du schon so "drauf bist", dann brauchst du die einzelnen Variablen ja nichteinmal "globalisieren".
Das geht in einer Funktion mit nur einem Befehl ;)

PHP:
extract($GLOBALS);

Für die anderen User die dies lesen:
Bitte gewöhnt es euch einfach nicht an, es hat schon seinen Grund, warum der Großteil der PHPler von der Nutzung globaler Variablen abrät.
 
wieso wenn ich so drauf bin :)

wer erzählt denn hier die ganze Zeit das ist "so" und sagt nur den geliebten Spruch aller Mütter (zumindest konnt ich das schon zu Hauf feststellen :p), da das nunmal so ist ;)

so, nun is aber gut
schönen Tach noch ;)
 
Zurück