2011-07-09 15 views
7

Estoy construyendo una aplicación PHP que usa un menú de selección para crear plantillas de correo electrónico. Las plantillas están divididas en partes reutilizables (cada una es un archivo html separado). ¿Existe una manera fácil de requerir múltiples archivos con una expresión? (Mi PHP es muy oxidada ...)Requerir archivos múltiples

Básicamente quiero hacer algo como:

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

Respuesta

13

Bueno, se podría convertir en una función:

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

Uso de esta manera:

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

Sin embargo, si usted está incluyendo clases, una solución mejor sería utilizar autoloading.

5

de crédito a partir de Tom Haighhow to require all files in a folder?:

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

almacenan todos los archivos requeridos en $dir y el código anterior hará el resto.

+1

parece una muy mala idea que requiere archivos ciegamente ... – ehime

+0

que podría ser muy útil para la depuración. Ahora estoy en una situación en la que necesito cargar todos los archivos css que están en './Css', así que funciona. (para la depuración, no para la producción) –

1

EDIT:

Debido a que desea que se requiera o incluir varios archivos, puede utilizar este algoritmo recursivo para incluir archivos en una carpeta especificada. La carpeta es la raíz que inicia el iterador. Como el algoritmo es recursivo, atravesará automáticamente todas las carpetas posteriores e incluirá también esos archivos.

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

Esta solución solo es buena si quiere cargar clases. Por lo tanto, las funciones de utilidades que reutiliza pueden no estar en clases. Entonces, no es una buena respuesta, supongo que es un problema. Aún así, es interesante para cargar clases automáticamente. –

Cuestiones relacionadas