public static function queue_dirs($dirs)
{
static $loaded_dirs = array();
$files = array();
if (!is_array($dirs) && !$dirs instanceof \Traversable) {
$dirs = array($dirs);
}
$lower_basename = function ($string) {
return strtolower(basename($string));
};
// For each directory, save the available files in the $files array.
foreach ($dirs as $dir) {
if (!in_array($dir, $loaded_dirs)) {
$glob = glob($dir . '/*.php');
if ($glob === false || empty($glob)) {
continue;
}
$fnames = array_map($lower_basename, $glob);
$files = array_merge($files, array_combine($fnames, $glob));
$loaded_dirs[] = $dir;
}
}
if (is_array(self::$files)) {
self::$files = array_merge(self::$files, $files);
} else {
self::$files = $files;
}
return self::$files;
}