2011-07-09 58 views
7

我正在構建一個使用選擇菜單構建電子郵件模板的PHP應用程序。模板被分解成可重用的部分(每個都是一個單獨的html文件)。是否有一種簡單的方法需要一個表達式的多個文件? (我的PHP是真的生鏽...)需要多個文件

基本上我想要做的事,如:

function require_multi() { 
    require_once($File1); 
    require_once($File2); 
    require_once($File3); 
    require_once($File4); 
} 

回答

13

嗯,你可以把它變成一個功能:

function require_multi($files) { 
    $files = func_get_args(); 
    foreach($files as $file) 
     require_once($file); 
} 

使用這樣的:

require_multi("one.php", "two.php", ..); 

但是,如果您包括課程,更好的解決方案是使用autoloading

5

感謝Tom Haighhow to require all files in a folder?

$files = glob($dir . '/*.php'); 
foreach ($files as $file) 
    require($file); 

存儲您所有的要求$dir文件和上面的代碼將做休息。

+1

這似乎是一個非常糟糕的想法,需要文件盲目... – ehime

+0

它可能會非常有用的調試。我現在處於需要加載所有'。/ css'中的所有css文件的情況,所以它就會啓動。 (用於調試,不用於生產) –

1

編輯:

因爲你想要求或包括多個文件,你可以使用這個遞歸算法 包括在指定的文件夾中的文件。該文件夾是啓動 迭代器的根。由於算法是遞歸的,因此它會自動遍歷所有後續文件夾幷包含這些文件。

public function include_all_files($root) { 
    $d = new RecursiveDirectoryIterator($root); 
    foreach (new RecursiveIteratorIterator($d) as $file => $f) { 
     $ext = pathinfo($f, PATHINFO_EXTENSION); 
     if ($ext == 'php' || $ext == 'inc') 
      include_once ($file); // or require(), require_once(), include_once() 
    } 
} 

include_all_files('./lib'); 
+0

這種解決方案只有在他想要加載類時纔有用。因此,他重用的那些實用程序功能可能不在課堂上。所以,我認爲這不是一個好的答案,因爲這是個問題。不過,這對於自動加載類很有趣。 –