26 public static function start() {
34 public static function getRoute($path,$cachedResponse=
true) {
35 $path=self::slashPath($path);
36 foreach ( self::$routes as $routePath => $routeDetails ) {
37 if (preg_match(
"@^" . $routePath .
"$@s", $path, $matches)) {
38 if (!isset($routeDetails[
"controller"])) {
40 if (isset($routeDetails[$method]))
41 return self::getRouteUrlParts([
"path" => $routePath,
"details" => $routeDetails[$method] ], $matches, $routeDetails[$method][
"cache"], $routeDetails[$method][
"duration"],$cachedResponse);
43 return self::getRouteUrlParts([
"path" => $routePath,
"details" => $routeDetails ], $matches, $routeDetails[
"cache"], $routeDetails[
"duration"],$cachedResponse);
50 foreach ( self::$routes as $routePath => $routeDetails ) {
51 if (!isset($routeDetails[
"controller"])) {
52 $routeDetails=\reset($routeDetails);
54 if($controller===$routeDetails[
"controller"] && $action===$routeDetails[
"action"]){
55 $routeDetails[
"path"]=$routePath;
63 $path=self::slashPath($path);
65 foreach ( self::$routes as $routePath => $routeDetails ) {
66 if (preg_match(
"@^" . $routePath .
".*?$@s", $path, $matches)) {
67 $result[$routePath]=$routeDetails;
74 $path=self::slashPath($path);
75 foreach ( self::$routes as $routePath => $routeDetails ) {
76 if (preg_match(
"@^" . $routePath .
"$@s", $path, $matches)|| \stripslashes($routePath)==$path) {
77 if (!isset($routeDetails[
"controller"])) {
78 return \reset($routeDetails);
88 foreach ( self::$routes as $routePath => $routeDetails ) {
89 if (!isset($routeDetails[
"controller"])) {
90 $routeDetails=\reset($routeDetails);
92 if($routeDetails[
"controller"]===$controllerName && $routeDetails[
"action"]===$actionName)
93 $result[$routePath]=$routeDetails;
105 foreach ( self::$routes as $routePath => $routeDetails ) {
106 if (self::checkRouteName($routeDetails, $name)) {
107 if(\
sizeof($parameters)>0)
108 $routePath=self::_getURL($routePath, $parameters);
110 return \ltrim($routePath,
'/');
125 public static function path($name,$parameters=[],$absolute=
false){
126 return self::getRouteByName($name,$parameters,$absolute);
135 public static function url($name,$parameters=[]){
139 protected static function _getURL($routePath,$params){
140 $result= \preg_replace_callback(
'~\((.*?)\)~',
function($matches) use (&$params) {
141 return array_shift($params);
143 if(\
sizeof($params)>0){
144 $result=\rtrim($result,
'/').
'/'.\implode(
'/', $params);
150 if(!isset($routeDetails[
"name"])){
151 foreach ($routeDetails as $methodRouteDetail){
152 if(isset($methodRouteDetail[
"name"]) && $methodRouteDetail==$name)
156 return isset($routeDetails[
"name"]) && $routeDetails[
"name"] == $name;
159 public static function getRouteUrlParts($routeArray, $params, $cached=
false, $duration=NULL,$cachedResponse=
true) {
160 $params=\array_slice($params, 1);
161 $ctrl=str_replace(
"\\\\",
"\\", $routeArray[
"details"][
"controller"]);
162 $result=[ $ctrl,$routeArray[
"details"][
"action"] ];
163 $paramsOrder=$routeArray[
"details"][
"parameters"];
165 foreach ( $paramsOrder as $order ) {
167 if(isset($params[$index]))
168 $result=\array_merge($result,\array_diff(\explode(
"/", $params[$index]),[
""]));
171 if(\substr($order, 0,1)===
"~"){
172 $order=\intval(\substr($order,1,1));
173 if(isset($params[$order])){
174 $result=\array_merge($result,\array_diff(\explode(
"/", $params[$order]),[
""]));
178 $result[]=self::cleanParam($params[$order]);
179 unset($params[$order]);
182 if ($cached ===
true && $cachedResponse===
true) {
190 return \substr($param, 0,-1);
199 public static function setExpired($routePath, $expired=
true) {
214 public static function addRoute($path, $controller, $action=
"index", $methods=null, $name=
"", $cache=
false, $duration=null,$requirements=[]) {
215 self::addRouteToRoutes(self::$routes, $path, $controller, $action, $methods, $name, $cache, $duration,$requirements);
218 public static function addRouteToRoutes(&$routesArray, $path, $controller, $action=
"index", $methods=null, $name=
"", $cache=
false, $duration=null,$requirements=[]) {
220 if(\class_exists($controller)){
221 $method=new \ReflectionMethod($controller, $action);
222 ControllerParser::parseRouteArray($result, $controller, [
"path" => $path,
"methods" => $methods,
"name" => $name,
"cache" => $cache,
"duration" => $duration,
"requirements"=>$requirements ], $method, $action);
223 foreach ( $result as $k => $v ) {
static getMethod()
Returns the http method.
static url($name, $parameters=[])
Returns the generated url from a route.
static setExpired($routePath, $expired=true)
static getRouteInfo($path)
static checkRouteName($routeDetails, $name)
static addRouteToRoutes(&$routesArray, $path, $controller, $action="index", $methods=null, $name="", $cache=false, $duration=null, $requirements=[])
static addRoute($path, $controller, $action="index", $methods=null, $name="", $cache=false, $duration=null, $requirements=[])
static _getURL($routePath, $params)
static getRouteInfoByControllerAction($controller, $action)
static getRoute($path, $cachedResponse=true)
static setExpired($routePath, $expired=true)
Déclare une route comme étant expirée ou non.
static getAnnotations($controllerName, $actionName)
static getRouteUrlParts($routeArray, $params, $cached=false, $duration=NULL, $cachedResponse=true)
static cleanParam($param)
static path($name, $parameters=[], $absolute=false)
Returns the generated path from a route.
static parseRouteArray(&$result, $controllerClass, $routeArray, \ReflectionMethod $method, $methodName, $prefix="", $httpMethods=NULL)
static getRouteCache($routePath, $duration)
static getRouteByName($name, $parameters=[], $absolute=true)
Returns the generated path from a route.
static filterRoutes($path)
This file is part of Ubiquity framework.
static getControllerCache($isRest=false)
static endswith($hay, $needle)
static startswith($hay, $needle)