Skip to content

Commit 6c9e4a0

Browse files
committed
Implement a route mapper class
1 parent 9daee9c commit 6c9e4a0

File tree

1 file changed

+80
-0
lines changed

1 file changed

+80
-0
lines changed

src/WaterPipe/Routing/RouteMap.php

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
<?php
2+
3+
/**
4+
* WaterPipe - URL routing framework for PHP
5+
*
6+
* Permission is hereby granted, free of charge, to any person obtaining a copy
7+
* of this software and associated documentation files (the "Software"), to deal
8+
* in the Software without restriction, including without limitation the rights
9+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10+
* copies of the Software, and to permit persons to whom the Software is
11+
* furnished to do so, subject to the following conditions:
12+
*
13+
* The above copyright notice and this permission notice shall be included in all
14+
* copies or substantial portions of the Software.
15+
*
16+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22+
* SOFTWARE.
23+
*
24+
* @category Library
25+
* @package WaterPipe
26+
* @author Axel Nana <[email protected]>
27+
* @copyright 2018 Aliens Group, Inc.
28+
* @license MIT <https://github.com/ElementaryFramework/WaterPipe/blob/master/LICENSE>
29+
* @version 1.2.0
30+
* @link http://waterpipe.na2axl.tk
31+
*/
32+
33+
namespace ElementaryFramework\WaterPipe\Routing;
34+
35+
use ElementaryFramework\WaterPipe\HTTP\Request\Request;
36+
use ElementaryFramework\WaterPipe\HTTP\Response\Response;
37+
38+
abstract class RouteMap
39+
{
40+
/**
41+
* The user request.
42+
*
43+
* @var Request
44+
*/
45+
protected $_request;
46+
47+
/**
48+
* The server response
49+
*
50+
* @var Response
51+
*/
52+
protected $_response;
53+
54+
/**
55+
* Initialize the RouteMap.
56+
*/
57+
public function __construct()
58+
{
59+
$this->_request =& Request::capture();
60+
$this->_response = new Response();
61+
}
62+
63+
/**
64+
* Map the given URI.
65+
*
66+
* @param string $uri The URI to map.
67+
*/
68+
public function map(string $uri)
69+
{
70+
$parts = explode('/', $uri);
71+
72+
try {
73+
if (method_exists($this, $parts[0])) {
74+
$method = new \ReflectionMethod($this, $parts[0]);
75+
$parameters = explode('/', implode('/', array_splice($parts, 1)), $method->getNumberOfParameters());
76+
$method->invokeArgs($this, $parameters);
77+
}
78+
} catch (\Throwable $th) { }
79+
}
80+
}

0 commit comments

Comments
 (0)