@@ -150,14 +150,39 @@ public function uri($className, $params = array())
150150 * Given the request data and the loaded resource metadata, pick the best matching
151151 * resource to handle the request based on URI and priority.
152152 *
153+ * @deprecated You should use the route method instead.
153154 * @param Request $request
154155 * @return Resource
155156 */
156157 public function getResource ($ request = NULL )
158+ {
159+ if (!$ request ) {
160+ $ request = new Request ();
161+ }
162+
163+ $ route = $ this ->route ($ request );
164+ $ filename = $ route ->getFilename ();
165+ $ className = $ route ->getClass ();
166+
167+ if ($ filename && is_readable ($ filename )) {
168+ require_once ($ filename );
169+ }
170+
171+ return new $ className ($ this , $ request );
172+ }
173+
174+ /**
175+ * Given the request data and the loaded resource metadata, pick the best matching
176+ * resource to handle the request based on URI and priority.
177+ *
178+ * @param Request $request
179+ * @return ResourceMetadata
180+ */
181+ public function route ($ request = NULL )
157182 {
158183 $ matchedResource = NULL ;
159184 if (!$ request ) {
160- $ request = new Request ();
185+ $ request = new Request ();
161186 }
162187 foreach ($ this ->resources as $ className => $ resourceMetadata ) {
163188 foreach ($ resourceMetadata ->getUri () as $ index => $ uri ) {
@@ -179,13 +204,9 @@ public function getResource($request = NULL)
179204 }
180205 }
181206 if ($ matchedResource ) {
182- if ($ matchedResource [0 ]->getFilename () && is_readable ($ matchedResource [0 ]->getFilename ())) {
183- require_once ($ matchedResource [0 ]->getFilename ());
184- }
185207 $ request ->setParams ($ matchedResource [1 ]);
186208
187- $ className = $ matchedResource [0 ]->getClass ();
188- return new $ className ($ this , $ request , $ matchedResource [1 ]);
209+ return $ matchedResource [0 ];
189210 } else {
190211 throw new NotFoundException (sprintf ('Resource matching URI "%s" not found ' , $ request ->uri ));
191212 }
@@ -194,7 +215,7 @@ public function getResource($request = NULL)
194215 /**
195216 * Get the already loaded resource annotation metadata
196217 * @param Tonic/Resource $resource
197- * @return str[]
218+ * @return ResourceMetadata
198219 */
199220 public function getResourceMetadata ($ resource )
200221 {
0 commit comments