/** * This initializes what framework needs. */ public static function init() { //Get framework application names //Throw out the error if the json cannot be decoded $configArray = json_decode(file_get_contents(Framework::configFile()), TRUE); $names = array(); $apps = array(); $allAppRoutes = array(); foreach ($configArray['%applications'] as $application) { $keys = array_keys($application); $names[] = $keys[0]; $appSettings = $application[$keys[0]]; //server name & document root & relative path $serverName = $appSettings[0]; $docRoot = $appSettings[1]; $pathName = "/"; if (substr($appSettings[2], 0, 1) != "/") { $pathName .= $appSettings[2]; } $app = new Application($keys[0], $serverName, $docRoot, $pathName); //** Get the application's application config $appSpecificConfigArray = NULL; if (!is_null($app->appConfigFile())) { $appSpecificConfigArray = json_decode(file_get_contents($app->appConfigFile()), TRUE); } //Get the framework's application config $finalAppConfigArray = array(); foreach ($configArray["%application_configs"] as $appConfigArray) { if ($appConfigArray["%name"] == $keys[0]) { $finalAppConfigArray = $appConfigArray; } } //Overwrite the application_configs by application's config array if (isset($appSpecificConfigArray['%application_configs']) && isset($appSpecificConfigArray['%application_configs'][0])) { $finalAppConfigArray = array_replace_recursive($finalAppConfigArray, $appSpecificConfigArray['%application_configs'][0]); } $app->setConfig($finalAppConfigArray); $apps[$keys[0]] = $app; //Get all routes from application specific config if (isset($appSpecificConfigArray["%routes"])) { $allAppRoutes = array_replace_recursive($allAppRoutes, $appSpecificConfigArray["%routes"]); } } Framework::$appNames = $names; Framework::$apps = $apps; //process routing table here $table = array(); $routeParams = array(); if (isset($configArray['%routes'])) { //overwrite the routes $allRoutes = $configArray['%routes']; if (!empty($allAppRoutes)) { $allRoutes = array_replace_recursive($configArray['%routes'], $allAppRoutes); } foreach ($allRoutes as $routeUrl => $routeVar) { if (isset($apps[$routeVar[0]])) { $appObj = $apps[$routeVar[0]]; $mvcValue = new MvcValue(); $mvcValue->setNames($appObj->relativePath(), $routeVar[0], $routeVar[1], Route::fromHyphenToCamelCase($routeVar[2], TRUE), Route::fromHyphenToCamelCase($routeVar[3])); $table[$routeUrl] = $mvcValue; if (isset($routeVar[4])) { $routeParams[$routeUrl] = $routeVar[4]; } } } } Route::$routingTable = $table; Route::$routingParams = $routeParams; include "AutoLoader.php"; }