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