2011-07-09 62 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

这种解决方案只有在他想要加载类时才有用。因此,他重用的那些实用程序功能可能不在课堂上。所以,我认为这不是一个好的答案,因为这是个问题。不过,这对于自动加载类很有趣。 –