Есть ли простой способ потребовать все файлы в папке?
Нет короткого способа сделать это, вам нужно реализовать его на PHP. Что-то вроде этого должно быть достаточно:
foreach (scandir(dirname(__FILE__)) as $filename) { $path = dirname(__FILE__) . '/' . $filename; if (is_file($path)) { require $path; } }
Вероятно, только делая что-то вроде этого:
$files = glob($dir . '/*.php'); foreach ($files as $file) { require($file); }
Возможно, более эффективно использовать opendir()
и readdir()
чем glob()
.
Нет простого способа, как в Apache, где вы можете просто Include /path/to/dir
, и все файлы будут включены.
Возможным способом является использование RecursiveDirectoryIterator из SPL:
function includeDir($path) { $dir = new RecursiveDirectoryIterator($path); $iterator = new RecursiveIteratorIterator($dir); foreach ($iterator as $file) { $fname = $file->getFilename(); if (preg_match('%\.php$%', $fname)) { include($file->getPathname()); } } }
Это приведет к тому, что все конечные файлы .php
будут .php
из $path
, независимо от того, насколько они глубоки в структуре.
Просто:
foreach(glob("path/to/my/dir/*.php") as $file){ require $file; }
foreach
. foreach (glob("classes/*") as $filename) { require $filename; }
Для получения дополнительной информации ознакомьтесь с этим ранее размещенным вопросом :
рекурсивно весь список файлов и 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); }
Мой способ требовать всех братьев и сестер:
<?php $files = glob(__DIR__ . '/*.php'); foreach ($files as $file) { // prevents including file itself if ($file != __FILE__) { require($file); } }
Как require_all ():
//require all php files from a folder function require_all ($path) { foreach (glob($path.'*.php') as $filename) require_once $filename; }