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