我怎样才能用相应的方法调用控制器是 Aura Router?
How can I invoke a controller with respective method is Aura Router?
根据Aura Router的文档,为了定义一个新的路径(例如GET方法),我们可以使用这个代码片段:
$map->get('blog.read', '/blog/{classname}/{method}/{param}', function ($request) {
$className = $request->getAttribute('classname');
$methodName = $request->getAttribute('method');
$param = $request->getAttribute('param');
$response = new Zend\Diactoros\Response();
$response->getBody()->write("You asked for blog entry {$id}.");
return $response;
});
如果在同一个文件中定义了$class名称,我们可以这样使用:
...
$param = $request->getAttribute('param');
$classInstance = new $classname();
$output = $classInstance->$methodName($param);
$response = new Zend\Diactoros\Response();
...
但是如果 class 是在另一个文件中定义的(例如 Vendor\Controller\ClassName 等不同的命名空间),我该如何实例化它?
在 Aura 路由器中使用 class 的唯一方法是在控制器中定义它或使用顶部的 use 语句加载 class。
根据Aura Router的文档,为了定义一个新的路径(例如GET方法),我们可以使用这个代码片段:
$map->get('blog.read', '/blog/{classname}/{method}/{param}', function ($request) {
$className = $request->getAttribute('classname');
$methodName = $request->getAttribute('method');
$param = $request->getAttribute('param');
$response = new Zend\Diactoros\Response();
$response->getBody()->write("You asked for blog entry {$id}.");
return $response;
});
如果在同一个文件中定义了$class名称,我们可以这样使用:
...
$param = $request->getAttribute('param');
$classInstance = new $classname();
$output = $classInstance->$methodName($param);
$response = new Zend\Diactoros\Response();
...
但是如果 class 是在另一个文件中定义的(例如 Vendor\Controller\ClassName 等不同的命名空间),我该如何实例化它?
在 Aura 路由器中使用 class 的唯一方法是在控制器中定义它或使用顶部的 use 语句加载 class。