Skip to content

Commit eb74069

Browse files
author
xujiajun
committed
fix bug when bina route name
1 parent 449eeef commit eb74069

File tree

3 files changed

+37
-10
lines changed

3 files changed

+37
-10
lines changed

src/Route.php

+5
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
<?php
22
namespace TastRouter;
33

4+
/**
5+
* Class Route
6+
* @package TastRouter
7+
* @author xujiajun [github.com/xujiajun]
8+
*/
49
class Route
510
{
611
private $url;

src/RouteCollection.php

+4
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22

33
namespace TastRouter;
44

5+
/**
6+
* Class RouteCollection
7+
* @package TastRouter
8+
*/
59
class RouteCollection extends \SplObjectStorage
610
{
711
/**

src/Router.php

+28-10
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
<?php
22
namespace TastRouter;
33

4-
54
/**
65
* Class Router
76
* @package TastRouter
8-
* @author xujiajun
7+
* @author xujiajun [github.com/xujiajun]
98
*/
109
class Router
1110
{
@@ -28,6 +27,19 @@ public function __construct(RouteCollection $routeCollection)
2827
$this->routes = $routeCollection;
2928
}
3029

30+
/**
31+
* @return array|RouteCollection
32+
*/
33+
public function getRoutes()
34+
{
35+
return $this->routes;
36+
}
37+
38+
public function setRoutes(RouteCollection $routes)
39+
{
40+
$this->routes = $routes;
41+
}
42+
3143
/**
3244
* @return mixed
3345
*/
@@ -44,6 +56,7 @@ public function matchCurrentRequest()
4456
if (($pos = strpos($requestUrl, '?')) !== false) {
4557
$requestUrl = substr($requestUrl, 0, $pos);
4658
}
59+
4760
return $this->match($requestUrl, $requestMethod);
4861
}
4962

@@ -57,6 +70,8 @@ public function match($requestUrl, $requestMethod = 'GET')
5770
{
5871
$isRegexp = false;
5972

73+
$this->_bind();
74+
6075
foreach ($this->routes->all() as $route) {
6176

6277
if (strpos($requestUrl, $route->getNamekey(), 0)) {
@@ -68,11 +83,6 @@ public function match($requestUrl, $requestMethod = 'GET')
6883
}
6984

7085
$url = $route->getUrl();
71-
//bind name
72-
$name = $route->getName();
73-
if (!empty($name)) {
74-
$this->namedroute[$name] = $route;
75-
}
7686

7787
if (in_array($requestUrl, (array)$url)) {
7888
$route->dispatch();
@@ -88,7 +98,6 @@ public function match($requestUrl, $requestMethod = 'GET')
8898
$route->dispatch();
8999
return $route;
90100
}
91-
92101
return null;
93102
}
94103

@@ -107,14 +116,12 @@ public function generate($routeName, array $parameters = [])
107116
$url = $this->namedroute[$routeName]->getUrl();
108117
preg_match_all('/\/{\w+}\/?/', $url, $matches);
109118
$matches = $matches[0];
110-
111119
if (!empty($matches)) {
112120
$matches[count($matches) - 1] .= '/';
113121
return preg_replace($matches, array_reverse($parameters), $url);
114122
}
115123

116124
return $url;
117-
118125
}
119126

120127
/**
@@ -142,6 +149,17 @@ public static function parseConfig(array $config)
142149
return new Router($collection);
143150
}
144151

152+
//bind name
153+
private function _bind()
154+
{
155+
foreach ($this->routes->all() as $route) {
156+
$name = $route->getName();
157+
if (!empty($name)) {
158+
$this->namedroute[$name] = $route;
159+
}
160+
}
161+
}
162+
145163
/**
146164
* @param $url
147165
* @param $requestUrl

0 commit comments

Comments
 (0)