/** * get all routes * get the URLs, the variables, the modules and the actions of all routes, use the "/applications/config/routes.xml" file. * @param string current url (optionnal) * @return array list of routes object */ public function getAllRoutes($currentUrl = null) { //get content of the file. $xml = new \DOMDocument(); $xml->load(__DIR__ . '/../applications/config/routes.xml'); $file = $xml->getElementsByTagName('route'); //parse the content. $varsNames = array(); $varsValues = array(); $varsList = array(); foreach ($file as $line) { //create the route. $varsNames = explode(',', $line->getAttribute('vars')); //get the name of all variables $route = new route($line->getAttribute('url'), $line->getAttribute('module'), $line->getAttribute('action'), $line->getAttribute('name'), $varsNames); //get variables. if ($varsValues = $route->match($currentUrl)) { array_shift($varsValues); // the first result contain the full captured string (cf. pregmatch manual). foreach ($varsValues as $key => $match) { $varsList[$varsNames[$key]] = $match; } $route->setVars($varsList); } //add the route to the router. $this->addRoute($route); } //return all routes. return $this->routes; }