Include in Variable und Funktion

qsrs

Erfahrenes Mitglied
Hallo,

ich habe Dateien, welche in eine andere Datei includiert werden sollen. In den includierten Dateien stehen einige hunderte Variablen. In index.php soll nun eine dieser Dateien, je nach Auswhal, eingebunden werden, vereinfacht:

PHP:
if ($lang == "ger") {
include ("ger.php");
}
elseif ($lang == "eng") {
include ("eng.php");
}
usw...

In meiner index.php habe ich eine Funktion, in welcher ich die Variablen aus ger.php, eng.php etc. ebenfalls benötige, je nachdem welche includiert wird. Ich könnte jetzt einfach die ganze Abfrage nochmal in die Funktion kopieren, so programmiert man ja aber nicht. Theoretisch wäre es am Einfachsten, ich könnte eine Variable in dieser Abfrage definieren, und in der Variable den include-Befehl speichern (und das dann an die Funktion übergeben) - das geht ja aber so ohne Weiteres nicht. Wie kann ich auf die Variablen aus ger.php, eng.php etc. am Besten in einer Funktion in der index.php zugreifen?

Ich habe aus der Abfrage auch schon eine Funkiton gemacht, und sie dann versucht in der anderen Funktion zu verwenden - das hat aber nicht funktioniert:

PHP:
function language ()
if ($lang == "ger") {
include ("ger.php");
}
elseif ($lang == "eng") {
include ("eng.php");
}
}

und dann

PHP:
function test () {
language ();
}
 
Zuletzt bearbeitet:
Nabend,
kannst du deine Frage nochmal anders ( und vorallem kürzer ) formulieren, bitte ? Ich steig da nicht ganz durch was dein Problem ist.
 
index.php holt sich per

if ($lang == "ger") {
include ("ger.php");
}
elseif ($lang == "eng") {
include ("eng.php");
}

irgendeine Datei. Darin sind Variablen (hunderte), die ich in einer Funktion in index.php benötige. Möchte obigen Code aber nicht nochaml in der Funktion verwenden müssen.
 
Wenn ich das richtig verstehe, wäre das eine Lösung:

in der datei x.php befindet sich:

PHP:
$var_xdr = "hi";
$var_rte = "hello";
$var_ght = "hallo";
$var_asw = "bonjour";

diese wird jetzt includiert.

in der Datei index.php befindet sich die function die diese Variablen nutzen soll.

Variante #1:
Funktion mit den Variablen aufrufen.

PHP:
function ich_bin_eine_function($variable1, $variable2, $variable3 ...)
{
 echo moep;
}
Aufruf der function:
PHP:
ich_bin_eine_function($var_xdr, $var_rte, $var_ght ...);

Variante #2:
Variablen via global in die function holen.

PHP:
function ich_bin_eine_function()
{
    global $var_xdr;
    global $var_rte;
    global $var_ght;
    global $var_asw;
}

Hoffe hab das richtig verstanden jetzt.
 
Ich denke, du hast es schon richtig verstanden. Nur ist das Problem, dass ich hunderte von Variablen habe, die ich dann alle auf diese Weise der Funktion bekannt geben müsste. Dazu kommt, dass ich mehrere Funktionen habe, und müsste das immer wieder so machen. Das wäre viel zu viel Code und Aufwand. Das ist mein eigentliches Problem. Ich sollte über alle Variablen verfügen, ohne diese extra deklarieren zu müssen. Das Einfachste wäre, ich könnte so etwas hier machen (rein zum besseren Verständnis):

PHP:
if ($lang == "ger") { 
include ("ger.php"); 
$include = include ("ger.php");
} 
elseif ($lang == "eng") { 
include ("eng.php"); 
$include = include ("eng.php"); 
}
 
function my_function () {
global $include;
// und hier irgendwie die include-Funktion nutzen
}
 
Sprech die Variablen über die globale $GLOBALS an
PHP:
//ger.php
$Eintrag1='Wert';

//funktion
function blub()
{
  echo $GLOBALS['Eintrag1']; //Wert
}
speichere in den Dateien die Werte in ein Array
z.b.
PHP:
//ger.php
$language =array('Eintrag1'=>'Wert');

//funktion
function blub()
{
  global $language;
  echo $language['Eintrag1']; //Wert
}
oder schreibe die Werte als Konstanten
z.b.
PHP:
//ger.php
define('Eintrag1', 'Wert');

//funktion
function blub()
{
  echo Eintrag1' //Wert
}
 
Zuletzt bearbeitet:
PHP:
if ($lang == "ger") {
$include = "ger.php";
} 

 
function my_function () {
include $include;
}
schon versucht ?

mit Konstanten kann man das ganze auch mal versuchen, da der Gültigkeitsbereich von Konstanten global ist.

edit: Konstanten können aber auch Nachteile mit sich bringen, je nachdem was genau du vor hast. ;)
vielleicht kann dir das hier auch noch weiterhelfen http://de.php.net/manual/de/language.variables.scope.php
 
Zuletzt bearbeitet:
Danke für die Antworten. Aber das wird so alles nicht funktionieren. Ich muss ein bestehendes Projekt bearbeiten, die Variablen sind im ganzen Skript verteilt, ich kann diese also nicht einfach in define () ändern.

Die Variablens sehen so aus:

$lang['1'] = "Wert";
$lang['2'] = "Anderer Wert";

So kann ich also auch nicht mit $GLOBALS[] darauf zugreifen, oder doch?
 
Danke für die Antworten. Aber das wird so alles nicht funktionieren. Ich muss ein bestehendes Projekt bearbeiten, die Variablen sind im ganzen Skript verteilt, ich kann diese also nicht einfach in define () ändern.

Die Variablens sehen so aus:

$lang['1'] = "Wert";
$lang['2'] = "Anderer Wert";

So kann ich also auch nicht mit $GLOBALS[] darauf zugreifen, oder doch?

PHP:
 print_r($GLOBALS['lang']);

sollte

Array
(
[1] => Wert
[2] => Anderer Wert
)

ausgeben.

$GLOBALS['lang'][2] beinhaltet also "Anderer Wert".
 
Zurück