mit readdir() keine Variablenübergabe möglich?!

xtramen01

Erfahrenes Mitglied
Hallo,

sorry für die 2 Posts hintereinander.
Aber ohne eure Hilfe wäre ich oftmals sehr aufgeschmissen.

Ich will in einem Verzeichnis alle php Dateien auslesen und einbinden.
Nur leider klappt hier die Variablenübergabe nicht.
Egal welche variablen ich in den eingebundenen Dateien erstelle, ich kann sie nirgends aufrufen.
Mach ich da einen Denkfehler?

PHP:
  function read_dir($verzeichnis){

      $handle =  opendir($verzeichnis);

      while ($datei = readdir($handle)){
          if ($datei != "." && $datei != ".."){
			      if (strstr($datei, ".php")) {
                      require_once($verzeichnis.$datei);
              }
          }
      }
      closedir($handle);
  }

PHP:
read_dir("modules/");
echo $foo;

Die Variable $foo ist in der per require_once() eingebundenen Datei deklariert.

Gruß und Danke!
 
warum so umständlich?

PHP:
$array = glob('pfad/*.php');
echo "<pre>";
print_r($array);


getestet:

1 Ordner mit 2 Dateien wo jeweils 1ne variable var1 und var2 deklariert wurden.
PHP:
<?php
	$array = glob('includes/*.php');
	
	echo "<pre>";
	print_r($array);
	
	foreach ($array as $key => $var){
		include_once $var;
	}
	
	echo $var1."\n";
	echo $var2."\n";

Ausgabe:
Code:
Array
(
    [0] => includes/file1.php
    [1] => includes/file2.php
)
foo
bar
 
Zuletzt bearbeitet:
Hmm...Danke dir erstmal.
Aber da ist was recht Merkwürdiges im gange.

So geht das wie gewünscht:

PHP:
 $array = glob('modules/*.php');

	 foreach ($array as $key => $var){
        include_once $var;
    }

   echo print_r($foo['name']);

Aber sobald ich das in eine Funktion packe, gehts wieder nicht:

PHP:
  function read_dir(){

	 $array = glob('modules/*.php');

	 foreach ($array as $key => $var){
        include_once $var;
    }
  }

   read_dir();
   echo print_r($foo['name']);

Überseh ich da was?

EDIT: Klar überseh ich da was. Die Variablen sind ja dann nur innerhalb der Funktion verfügbar. Kann man das irgendwie trotzdem mit einer Funktion lösen?
 
Zuletzt bearbeitet:
Ja, weil innerhalb von Funktionen aufgerufene Variablen sind ausserhalb nicht mehr gültig. Diese müsstest du dann noch als "global" definieren in den Dateien:
PHP:
global $var1;
$var1 = 'foo';
 
Zurück