2012-03-14 55 views
0

你好,我有以下方法:PHP嘗試包括水珠的陣列()'D目錄,不最後找到一個

private static function loadIncludes() 
{ 
    // prepare array of files from folders 
    $files = array(
     glob(self::libPath()."/*.php"), 
     glob(self::controllersPath()."/*.php"), 
     glob(self::extensionsPath()."/*.php"), 
    ); 

    // include files 
    foreach ($files as $set) 
    { 
     if (is_array($set)) foreach ($set as $file) 
     { 
      require_once($file); 
     } 
    } 
} 

如果我的print_r的$文件數組它包含了所有的文件,但對於一些因其不是做require_once()上的最後一個數組項(/家/ * /app/extensions/Controller.php) 看到輸出:

Array 
(
    [0] => Array 
     (
      [0] => /home/***/app/lib/CApp.php 
      [1] => /home/***/app/lib/CController.php 
      [2] => /home/***/app/lib/CDb.php 
      [3] => /home/***/app/lib/CView.php 
     ) 

    [1] => Array 
(
      [0] => /home/***/app/controllers/SiteController.php 
     ) 

    [2] => Array 
(
      [0] => /home/***/app/extensions/Controller.php 
     ) 

) 
+0

這應該工作。你確定該文件尚未包含嗎?另外,在我看來,'if(is_array($ set))foreach($ set as $ file){}'是不好的編碼風格。它可能會比這更清晰。 – netcoder 2012-03-14 15:37:00

+0

你怎麼知道它沒有執行'require_once'?也許它已經加載 – 2012-03-14 15:37:54

回答

-1

由於print_r的顯示只有一個,即使單個結果仍然是一個數組,

我相信if(is_array($ set))可以省略。

至於爲什麼只有最後一個不工作我不能說,

嘗試調試呼應了每種的每一步更好的循環

+0

*「至於爲什麼只有最後一個不工作,我不能說」*那麼它不是一個答案。 – netcoder 2012-03-14 15:35:36

+0

謝謝隊長明顯,對我來說代碼看起來不錯,我不能測試,因爲我沒有你的課/文件設置。我仍然在指導你如何解決你的問題,你是我們的。 – MakuraYami 2012-03-14 15:37:52

+1

這不是我的問題,這是OP的問題。這仍然不是答案,但它是一個很好的評論。在你說話之前,你可能應該閱讀並確保你正在處理合適的人。 – netcoder 2012-03-14 15:39:12