Hallo,
ich stehe vor einem grundlegenden PHP Verständnisproblem: Wie bekannt, kann innerhalb einer Funktion nicht auf eine Variable zugegriffen werden, die außerhalb der Funktion definiert ist:
Ressource 'test.php':
<?php
$name = 'Hans';
function testfunktion()
{
return $name;
}
echo testfunktion();
?>
Das funktioniert nicht und führt zu einem "Notice: Undefined variable: name".
Wenn man allerdings eine 2. Ressource 'config.php' anlegt, in der die Variable definiert ist, diese dann mit require() innerhalb der Funktion einbindet und auf diesem Weg auf den Variablenwert zugreifen öchte, dann funktioniert das:
Ressource 'config.php':
<?php
$name = 'Julian';
?>
Ressource 'test.php':
<?php
function testfunktion()
{
require('config.php');
return $name;
}
echo testfunktion();
?>
Das funktioniert nun und führt zur Ausgabe von 'Julian'.
Und ich verstehe nicht, wieso das so ist. Wieso kann ich innerhalb einer Funktion nicht auf eine außenstehende Variable zugreifen, aber sehr wohl eine außenstehende, andere PHP Ressource einbinden und darin stehende Variablen verwenden?
Ich dachte bisher immer, bei Funktionen muss ich alle Variablenwerte, die ich innerhalb der Funktion brauche, beim Aufruf der Funktion mitübergeben, wenn sie nicht innerhalb der Funktion definiert sind.
Vielleicht kann mir wer auf verständliche Art erklären, wieso auch der von mir zufällig entdeckte Weg funktioniert.
Mit lieben Grüßen
Melvin Cowznofski
What – me worry?