public function clear() { $files = Directory::search($this->m_cache, Directory::R_ANY); foreach ($files as $file) { unlink($file); Log::debug(sprintf('[delete] %s', str_replace('\\', '/', $file))); } return $files; }
/** * @param bool $rebuild * @return RouteMap */ public static function instance($rebuild = false) { return Cache::load('routes', function () { $lookup = []; // todo: add support for optional centralized routes foreach (Directory::search(BRAMBLE_DIR . '/Controllers', Directory::R_PHP, [Directory::R_HIDDEN]) as $file) { $controller_name = sprintf('%s\\%s', BRAMBLE_NS, substr(substr($file, strlen(BRAMBLE_DIR) + 1), 0, -4)); $reflection_class = new \ReflectionClass($controller_name); if (!$reflection_class->isAbstract()) { $controller = new $controller_name(Request::get()); if (!$controller instanceof Controller) { throw new \Exception('Only controllers are allowed in this directory'); } foreach ($controller->routes() as $route) { $route->defaults(['controller' => $controller_name]); $route->compile($lookup); } } } return new self($lookup); }, $rebuild); }
private static function get_reflection_controllers() { foreach (Directory::search(BRAMBLE_DIR . '/Controllers', Directory::R_PHP) as $file) { $controller_name = sprintf('%s\\%s', BRAMBLE_NS, substr(substr($file, strlen(BRAMBLE_DIR) + 1), 0, -4)); try { $reflect = new \ReflectionClass($controller_name); if (!$reflect->isAbstract()) { (yield $reflect); } } catch (\Exception $e) { } } }