PHP Variable aus includeter/required-Datei

te one

Lt. Commander
Registriert
Apr. 2009
Beiträge
1.255
Hallo,

irgendwie steh ich aufm Schlauch.
Und zwar hab ich folgendes Konstrukt:
PHP:
<?php
//index.php

//Framesets usw. mit Verweiß eines Frames auf map.php
echo '<frame src="map.php" name="map" scrolling="auto">';
?>

PHP:
<?php
//map.php

require_once ('include.php');
$x=5;
$y=5;
echo showmap($x,$y);
?>

PHP:
<?php
//include.php

session_start();
require_once ('include/settings.php');
require_once ('include/sql_connect.php');
require_once ('include/functions.php');
require_once ('include/language.php');
?>

PHP:
<?php
//settings.php

$G_install_dir="http://localhost/test/";
?>

PHP:
<?php
//functions.php

function showmap($x,$y) {
//mache irgendwas mit $G_install_dir <<<<GEHT NICHT
}
?>

Das wirft dann folgenden Fehler aus:
Notice: Undefined variable: G_install_dir in ...\include\functions.php on line 7 (das ist dort wo $G_install_dir gebraucht wird)

Das kann eigentlich doch garnet sein... Ich hab extra testdateien erstellt und das ganze nachgestellt. Da gehts.

Was übersehe ich?
 
Zuletzt bearbeitet:
Probiere mal:
PHP:
function showmap($x,$y) {
global $G_install_dir;
//mache irgendwas mit $G_install_dir
}
 
Also hab bemerkte, dass ich das noch etwas komplizierter habe. Nämlich sieht die functions.php wie folgt aus:

PHP:
<?php
function feldbild ($x,$y) {
//Hier wird die Variable tatsächlich gebraucht.
}
function showmap($x,$y) {
global $G_install_dir;
feldbild($x-2,$y+2);
}
?>

Jetzt hab ich oben bei der Funktion feldbild() genau vor der Stelle wo die Var gebraucht wird das global gesetzt und es geht!!

Du bringts mich jetzt aber zum Zweifeln an meinen PHP Kentnissen!
Müsste ich nicht eigentlich in der settings.php das auf global setzen??? Ist doch ne Art Variablendesklaration?!
 
Aso ist dann so dass der lokale Variablenname einfach auf den Wert außerhalb der Funktion refernziert bzw. ne Kopie davon anlegt (gibts wahrscheinlich auch als call by refernce bzw. value)

Dachte immer ich erstelle die Variable mit global und die ist dann global gültig...
Wieder was dazugelernt.
 

Ähnliche Themen

Zurück
Oben