控制器

URL解析规则

内置路由支持无限层级的路由,即Controller可以无限嵌套目录,如:

http://127.0.0.1:9501/api/auth/login

执行的方法为:\App\Controller\Api\Auth::login()

http://127.0.0.1:9501/a/b/c/d/f

如f为控制器名,执行的方法为:\App\Controller\A\B\C\D\F::index()
如F为方法名,执行的方法为:\App\Controllers\A\B\C\D::f()

示例代码

例如分别建立App\Controller\Api\Auth与App\Controller\Api\Index控制器。

  1. namespace App\Controller\Api;
  2. use Core\AbstractInterface\AbstractController;
  3. use Core\Http\Message\Status;
  4. class Auth extends AbstractController
  5. {
  6. function index()
  7. {
  8. // TODO: Implement index() method.
  9. $this->response()->write("api auth index");
  10. }
  11. function onRequest($actionName)
  12. {
  13. // TODO: Implement onRequest() method.
  14. }
  15. function actionNotFound($actionName = null, $arguments = null)
  16. {
  17. // TODO: Implement actionNotFound() method.
  18. $this->response()->withStatus(Status::CODE_NOT_FOUND);
  19. }
  20. function afterAction()
  21. {
  22. // TODO: Implement afterAction() method.
  23. }
  24. function login(){
  25. /*
  26. * url is /api/auth/login/index.html
  27. */
  28. $this->response()->writeJson(Status::CODE_OK,null,'this is auth login ');
  29. }
  30. }
  1. namespace App\Controller\Api;
  2. use Core\AbstractInterface\AbstractController;
  3. use Core\Http\Message\Status;
  4. use Core\Http\Message\UploadFile;
  5. class Index extends AbstractController
  6. {
  7. function index()
  8. {
  9. // TODO: Implement index() method.
  10. $this->response()->write("this is api index");/* url:domain/api/index.html domain/api/ */
  11. }
  12. function afterAction()
  13. {
  14. // TODO: Implement afterAction() method.
  15. }
  16. function onRequest($actionName)
  17. {
  18. // TODO: Implement onRequest() method.
  19. }
  20. function actionNotFound($actionName = null, $arguments = null)
  21. {
  22. // TODO: Implement actionNotFount() method.
  23. $this->response()->withStatus(Status::CODE_NOT_FOUND);
  24. }
  25. function afterResponse()
  26. {
  27. // TODO: Implement afterResponse() method.
  28. }
  29. function api(){
  30. $this->response()->write("this is api api");
  31. }
  32. }

若想访问Auth::index,则URL为ip:port/api/auth/index.html