/** * The constructor * * @param string $appBaseDir - The dir containing /App directory * @param string $appName * @param string $uri * @throws Exception */ public function __construct($appBaseDir, $appName = "Www", $uri = null) { if (!$uri) { $uri = implode("/", Http\Request::getUrlSegments()); } Env::setAppRootDir($appBaseDir); $appName = self::formatName($appName); if (!is_dir(Env::getAppRootDir())) { throw new Exception("The application root: 'App' directory doesn't\n exist at: " . Env::getAppRootDir()); } else { Autoloader::register(dirname(Env::getAppRootDir())); $this->appDir = Env::getAppRootDir() . "/{$appName}"; if (!is_dir($this->appDir)) { throw new Exception("The application name: '{$appName}' doesn't\n exist at: " . $this->appDir); } $this->setUri($uri); $this->baseNamespace = "App\\{$appName}"; $this->config = (new Config("VoodooApp"))->loadFile($this->appDir . "/Config" . Config::EXT); $routes = (new Config("AppRoutes"))->loadFile($this->appDir . "/Routes" . Config::EXT); $this->setRouting($routes->get("path") ?: []); if ($this->config->get("application.defaultModule")) { $this->defaultModule = $this->config->get("application.defaultModule"); } if ($this->config->get("application.defaultController")) { $this->defaultController = $this->config->get("application.defaultController"); } } }
/** * The constructor * * @param Controller $controller */ public function __construct(Controller $controller) { $this->controller = $controller; $this->templateDir = $this->controller->getModuleDir() . "/Views"; $this->controllersViewPath = $this->templateDir . "/"; $this->controllersViewPath .= $this->controller->getControllerName(); $this->appRootDir = Env::getAppRootDir(); /** * Handlebars */ $hbOptions = ["extension" => $this->ext]; $partialsLoader = new FilesystemLoader($this->templateDir, $hbOptions); $this->engine = new Handlebars(["partials_loader" => $partialsLoader]); /** * FlashMessage */ $this->flashMessage = new View\FlashMessage(); }