public static function all( $routes ) 
	{

		/* Call all functions that are to be executed before routing */
		foreach( self::$beforeFuncs as $beforeFunc ) {
			if( $beforeFunc[1] ) {
				call_user_func_array( $beforeFunc[0] , $beforeFunc[1] );
			} else {
				call_user_func( $beforeFunc[0] );
			}
		}

		self::$routes = $routes;
		$method = strtolower($_SERVER['REQUEST_METHOD']);
		$path = '/';
		$handler = null;
		$matched = array();
		if ( !empty ( $_SERVER['PATH_INFO'] ) ) {
			$path = $_SERVER['PATH_INFO'];
		} else if ( !empty ( $_SERVER['REQUEST_URI'] ) ) {
            $path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
		}

		if ( isset($routes[$path] ) ) {
			if( is_array( $routes[$path] ) ) {
				$handler = $routes[$path][0];
			} else {
				$handler = $routes[$path];
			}
		} else if ( $routes ) {
			
			$regex = array(
				'/{i}/',
				'/{s}/',
				'/{a}/'
				);

			$replacements = array(
				'([\d]+)'	,
				'([a-zA-Z]+)',
				'([\w-]+)'
				);

			foreach ( $routes as $routePath => $routeDesc ){
				$routePath = preg_replace( $regex, $replacements, $routePath );
				if( preg_match( '#^/?' . $routePath . '/?$#', $path, $matches ) ){
					if( is_array( $routeDesc ) ) {
						$handler = $routeDesc[0];
						if( isset( $routeDesc[2] )) {
							$middleware = $routeDesc[2];
						}
					}
					else 
						$handler = $routeDesc;
					$matched = $matches;
					break;
				}
			}
		}
		unset( $matched[0] );

		if( isset($middleware) ){
			$newMatched = self::callFunction( $middleware, $matched, $method );
			/* If new wildcard param are there pass them to main handler */
			if( $newMatched ) { 
				self::callFunction( $handler, $newMatched, $method );
			} else {
				self::callFunction( $handler, $matched, $method );
			}
		} else {
			self::callFunction( $handler, $matched, $method );
		}

		/* Call all the function that are to be executed after routing */
		foreach( self::$afterFuncs as $afterFunc )
			if( $afterFunc[1] ) {
				call_user_func_array( $afterFunc[0] , $afterFunc[1] );
			} else {
				call_user_func( $afterFunc[0] );
			}
	}
public static function all( $routes ) 
	{

		/* Call all functions that are to be executed before routing */
		foreach( self::$beforeFuncs as $beforeFunc ) {
			if( $beforeFunc[1] ) {
				call_user_func_array( $beforeFunc[0] , $beforeFunc[1] );
			} else {
				call_user_func( $beforeFunc[0] );
			}
		}

		self::$routes = $routes;
		$method = strtolower($_SERVER['REQUEST_METHOD']);
		$path = '/';
		$handler = null;
		$matched = array();
		if ( !empty ( $_SERVER['PATH_INFO'] ) ) {
			$path = $_SERVER['PATH_INFO'];
		} else if ( !empty ( $_SERVER['REQUEST_URI'] ) ) {
            $path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
		}

		if ( isset($routes[$path] ) ) {
			if( is_array( $routes[$path] ) ) {
				$handler = $routes[$path][0];
			} else {
				$handler = $routes[$path];
			}
		} else if ( $routes ) {
			
			$regex = array(
				'/{i}/',
				'/{s}/',
				'/{a}/'
				);

			$replacements = array(
				'([\d]+)'	,
				'([a-zA-Z]+)',
				'([\w-]+)'
				);

			foreach ( $routes as $routePath => $routeDesc ){
				$routePath = preg_replace( $regex, $replacements, $routePath );
				if( preg_match( '#^/?' . $routePath . '/?$#', $path, $matches ) ){
					if( is_array( $routeDesc ) ) {
						$handler = $routeDesc[0];
						if( isset( $routeDesc[2] )) {
							$middleware = $routeDesc[2];
						}
					}
					else 
						$handler = $routeDesc;
					$matched = $matches;
					break;
				}
			}
		}
		unset( $matched[0] );

		if( isset($middleware) ){
			$newMatched = self::callFunction( $middleware, $matched, $method );
			/* If new wildcard param are there pass them to main handler */
			if( $newMatched ) { 
				self::callFunction( $handler, $newMatched, $method );
			} else {
				self::callFunction( $handler, $matched, $method );
			}
		} else {
			self::callFunction( $handler, $matched, $method );
		}

		/* Call all the function that are to be executed after routing */
		foreach( self::$afterFuncs as $afterFunc )
			if( $afterFunc[1] ) {
				call_user_func_array( $afterFunc[0] , $afterFunc[1] );
			} else {
				call_user_func( $afterFunc[0] );
			}
	}
public static function all ( $ routes ) { /* Call all functions that are to be executed before routing */ foreach ( self :: $ beforeFuncs as $ beforeFunc ) { if ( $ beforeFunc [ 1 ] ) { call_user_func_array ( $ beforeFunc [ 0 ] , $ beforeFunc [ 1 ] ) ; } else { call_user_func ( $ beforeFunc [ 0 ] ) ; } } self :: $ routes = $ routes ; $ method = strtolower ( $ _SERVER [ 'REQUEST_METHOD' ] ) ; $ path = '/' ; $ handler = null ; $ matched = array ( ) ; if ( ! empty ( $ _SERVER [ 'PATH_INFO' ] ) ) { $ path = $ _SERVER [ 'PATH_INFO' ] ; } else if ( ! empty ( $ _SERVER [ 'REQUEST_URI' ] ) ) { $ path = parse_url ( $ _SERVER [ 'REQUEST_URI' ] , PHP_URL_PATH ) ; } if ( isset ( $ routes [ $ path ] ) ) { if ( is_array ( $ routes [ $ path ] ) ) { $ handler = $ routes [ $ path ] [ 0 ] ; } else { $ handler = $ routes [ $ path ] ; } } else if ( $ routes ) { $ regex = array ( '/{i}/' , '/{s}/' , '/{a}/' ) ; $ replacements = array ( '([\d]+)' , '([a-zA-Z]+)' , '([\w-]+)' ) ; foreach ( $ routes as $ routePath => $ routeDesc ) { $ routePath = preg_replace ( $ regex , $ replacements , $ routePath ) ; if ( preg_match ( '#^/?' . $ routePath . '/?$#' , $ path , $ matches ) ) { if ( is_array ( $ routeDesc ) ) { $ handler = $ routeDesc [ 0 ] ; if ( isset ( $ routeDesc [ 2 ] ) ) { $ middleware = $ routeDesc [ 2 ] ; } } else $ handler = $ routeDesc ; $ matched = $ matches ; break ; } } } unset ( $ matched [ 0 ] ) ; if ( isset ( $ middleware ) ) { $ newMatched = self :: callFunction ( $ middleware , $ matched , $ method ) ; /* If new wildcard param are there pass them to main handler */ if ( $ newMatched ) { self :: callFunction ( $ handler , $ newMatched , $ method ) ; } else { self :: callFunction ( $ handler , $ matched , $ method ) ; } } else { self :: callFunction ( $ handler , $ matched , $ method ) ; } /* Call all the function that are to be executed after routing */ foreach ( self :: $ afterFuncs as $ afterFunc ) if ( $ afterFunc [ 1 ] ) { call_user_func_array ( $ afterFunc [ 0 ] , $ afterFunc [ 1 ] ) ; } else { call_user_func ( $ afterFunc [ 0 ] ) ; } }
Static function of the class Link that deploys the route according to the passed handler and path

@param array $routes An array of combination of the path and its handler, that are final deployed for a particular url
Static function of the class Link that deploys the route according to the passed handler and path