/** * 获取指定路径下的所有文件列表(可递归) * * @param type $directory 路径 * @param type $recu 是否递归获取子目录 * @param type $ext 指定文件名结尾字符串(例如,扩展名) * * @return array 所有的文件完整路径 */ public static function AllFile($directory = __DIR__, $recu = false, $ext = '') { $mydir = dir($directory); if (!$mydir) { return []; } $files = []; $dirs = []; if (empty($ext)) { while ($file = $mydir->read()) { if ($file == "." or $file == "..") { continue; } else { if (is_dir("{$directory}/{$file}")) { if ($recu) { $dirs[] = "{$directory}/{$file}"; } } else { $files[] = $directory . '/' . $file; } } } } else { while ($file = $mydir->read()) { if ($file == "." or $file == "..") { continue; } else { if (is_dir("{$directory}/{$file}")) { if ($recu) { $dirs[] = "{$directory}/{$file}"; // $files = array_merge(AllFile("$directory/$file", $recu, $ext), $files); } } else { if (preg_match("/" . $ext . '$/', $file)) { $files[] = $directory . '/' . $file; } } } } } $mydir->close(); natsort($files); foreach ($dirs as $dir) { $files = array_merge($files, AllFile($dir, $recu, $ext)); } return $files; }
private function ReloadTicker() { //重载Common级的Ticker $tickerFiles = AllFile(DI_APP_COMMON_TICKER_PATH, true, 'Ticker.php'); DILoadTicker($tickerFiles, "\\Common\\Ticker"); //重载ServerWorker级的Ticker $tickerFiles = AllFile(DI_APP_SERVER_TICKER_PATH, TRUE, 'Ticker.php'); DILoadTicker($tickerFiles, "\\" . DI_SERVER_NAME . "\\Ticker"); }
/** * 自动加载指定目录下的文件(可递归、可指定文件结尾) * @param string $dirPath 指定的路径 * @param boolean $recu 是否递归 * @param string $ext 指定文件名结尾 */ function AutoRequire($dirPath, $recu = false, $ext = '.php') { $files = AllFile($dirPath, $recu, $ext); foreach ($files as $file) { // echo $file."\n"; require_cache($file); } }
protected function detectListener() { $files = AllFile(DI_APP_SERVER_LISTENER_PATH); }
/** * 初始化应用配置(当前Server独占) */ protected function LoadServerConfig() { //加载Server目录下所有的配置文件(以Config.php结尾) $configsPath = AllFile(DI_APP_SERVER_CONF_PATH, true, 'Config.php'); DILoadConfig($configsPath); }