$entry) { if (isset($ignore[$dir . '/' . $entry])) { unset($entries[$i]); } } } function prioritySort(string $dir, array &$entries, array $priority) { $first = array(); foreach ($entries as $i => $entry) { if (isset($priority[$dir . '/' . $entry])) { array_push($first, $entry); unset($entries[$i]); } } sort($entries); foreach ($first as $entry) { array_unshift($entries, $entry); } } function runDir(string $base, string $dir, array &$lines, array $ignore, array $priority): int { $count = 0; $entries = scandir($dir); removeIgnored($dir, $entries, $ignore); prioritySort($dir, $entries, $priority); foreach ($entries as $entry) { if ($entry === '.' || $entry === '..') { continue; } $filename = "$base/$dir/$entry"; if (is_dir($filename)) { $count += runDir($base, "$dir/$entry", $lines, $ignore, $priority); } } foreach ($entries as $entry) { $filename = "$base/$dir/$entry"; if (is_file($filename)) { if (substr($entry, -4) != '.php') { continue; } $data = file_get_contents($filename); $data = preg_replace('|/\*\*.*?\*/|s', '', $data); array_push($lines, "// file: $dir/$entry"); foreach (explode("\n", $data) as $line) { if (!preg_match('/^<\?php|^namespace |^use |vendor\/autoload|declare\s*\(\s*strict_types\s*=\s*1|^\s*\/\//', $line)) { array_push($lines, $line); } } $count++; } } return $count; } function addHeader(array &$lines) { $head = <<