/** * 注册应用 */ public function registerProject($project, $dir, $prefix = '') { class_loader()->registerNamespace($project, $dir); $files = file_scan($dir . '/' . $project, "|(\\w+)/\\1.php\$|is", array('fullpath' => true, 'minDepth' => 2)); foreach ($files as $f) { list($module, ) = explode('.', $f['basename']); $r = new ReflectionClass("{$project}\\{$module}\\{$module}"); foreach ($r->getMethods() as $method => $m) { if (!empty($m['comments']['route'])) { $routes = $this->mergePathPrefix($m['comments']['route'], $prefix); route_register($routes, "{$project}\\{$module}\\{$module}::{$method}"); } } } }
function file_scan($folder, $defs, $debug) { // hunts files/folders recursively for scannable items global $dircount, $report; $dircount++; if ($debug) $report .= '<p class="d">Scanning folder $folder ...</p>'; if ($d = @dir($folder)) { while (false !== ($entry = $d->read())) { $isdir = @is_dir($folder.'/'.$entry); if (!$isdir and $entry!='.' and $entry!='..') { virus_check($folder.'/'.$entry,$defs,$debug); } elseif ($isdir and $entry!='.' and $entry!='..') { file_scan($folder.'/'.$entry,$defs,$debug); } } $d->close(); } }
function file_include($dir, $regx, $options = array()) { $files = file_scan($dir, $regx, $options); foreach ($files as $f) { require_once $f['file']; } return $files; }