private function loadRoutes(&$routes, $apis_dir, $class, $method)
{
Logger::info("attempt to load router {$apis_dir}");
$dir = null;
if (is_dir($apis_dir) && $class === null) {
$apis_dir = $apis_dir . '/';
Verify::isTrue(is_dir($apis_dir), "{$apis_dir} not a dir");
$dir = @dir($apis_dir);
Verify::isTrue($dir !== null, "open dir {$apis_dir} failed");
$geteach = function () use($dir) {
$name = $dir->read();
if (!$name) {
return $name;
}
return $name;
};
} else {
if (is_file($apis_dir)) {
$files = array($apis_dir);
$apis_dir = '';
} else {
$apis_dir = $apis_dir . '/';
if (is_array($class)) {
foreach ($class as &$v) {
$v .= '.php';
}
$files = $class;
} else {
$files = array($class . '.php');
}
}
$geteach = function () use(&$files) {
$item = each($files);
if ($item) {
return $item[1];
} else {
return false;
}
};
}
while (!!($entry = $geteach())) {
$path = $apis_dir . str_replace('\\', '/', $entry);
if (is_file($path) && substr_compare($entry, '.php', strlen($entry) - 4, 4, true) == 0) {
$class_name = substr($entry, 0, strlen($entry) - 4);
$this->loadApi($routes, $path, $class_name, $method);
} else {
Logger::debug($path . ' ignored');
}
}
if ($dir !== null) {
$dir->close();
}
Logger::info("load router {$apis_dir} ok");
return $routes;
}