public static function collectFiles($directory, $files) { $listings = scandir($directory); foreach ($listings as $listing) { $path = "{$directory}/{$listing}"; if ($listing == '.' || $listing == '..') { continue; } // no hidden files or directories if (strpos($listing, ".") === 0) { continue; } // recursively scan directories if (is_dir($path)) { $files = Appcelerator_Service::collectFiles($path, $files); } // service files must be named [^.](.+)Service.php if (!stristr($listing, 'Service')) { continue; } // this is a valid service source file - record path and file name $files[$path] = Appcelerator_Service::fileToClassName($listing); } return $files; }