2013-04-22 68 views
1

是否有可能在一個行遞歸運行require_once這樣的:你可以在php中遞歸運行require_once嗎?

<?php 
require_once('./OAuth2/*'); 

或者你會去直接每個文件和require呢?

+1

你最好不要使用自動加載磁帶機 – 2013-04-22 16:45:23

+0

您可以使用['水珠()'](HTTP ://php.net/glob)獲取與數組中的模式匹配的文件列表,在數組上包含「foreach」幷包含每個元素。但你應該考慮使用[自動加載器](http://php.net/spl-autoload-register)來代替... – DaveRandom 2013-04-22 16:45:29

回答

4

不能這樣做。像這樣的工作:

foreach (glob("./OAuth2/*.php") as $filename) 
{ 
    require_once($filename); 
} 
+0

+1我一直都在使用它,它工作得很好。我通常這樣做 'foreach(glob(「classes/*。php」)as $ filename){ \t require_once($ filename); }' 與.php在那裏,以確保我不包括任何其他可能在目錄中的隨機文件(也許就像一個index.html文件) – 2013-04-22 16:48:50

0

遞歸所有的文件列表和require_once在一個目錄:

$files = array(); 

function require_once_dir($dir){ 

     global $files; 

     $item = glob($dir); 

     foreach ($item as $filename) { 

      if(is_dir($filename)) { 

        require_once_dir($filename.'/'. "*"); 

      }elseif(is_file($filename)){ 

        $files[] = $filename; 
      } 
     } 
} 

$recursive_path = "path/to/dir"; 

require_once_dir($recursive_path. "/*"); 

for($f = 0; $f < count($files); $f++){ 

    $file = $files[$f]; 

    require_once($file); 
}