dirList as $dir) { $this->processForDir($dir); } echo "Success." . PHP_EOL; echo "Files loaded: " . (string) $this->counter . "." . PHP_EOL; } protected function processForDir(string $dir) { $directory = new RecursiveDirectoryIterator($dir); $fullTree = new RecursiveIteratorIterator($directory); $phpFiles = new RegexIterator($fullTree, '/.+((? $file) { $this->processFile($file[0]); } } protected function processFile(string $file) { if ($this->isFileToBeIgnored($file)) { return; } try { require_once($file); $this->counter ++; } catch (Throwable $e) { $this->processException($e); throw $e; } } protected function processException(Throwable $e) { echo "Error occured." . PHP_EOL; $msg = $e->getMessage(); if ($msg) { echo "Message: {$msg}" . PHP_EOL; } $file = $e->getFile(); if ($file) { echo "File: {$file}" . PHP_EOL; } echo "Line: " . $e->getLine() . PHP_EOL; } protected function isFileToBeIgnored(string $file) : bool { $file = str_replace('\\', '/', $file); foreach ($this->ignoreList as $item) { if (strpos($file, $item) === 0) { return true; } } return false; } }