ArticleControllerDavid.php 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. <?php
  2. namespace internship\controller;
  3. use n2n\web\http\controller\ControllerAdapter;
  4. use n2n\web\http\controller\ParamPath;
  5. use n2n\web\http\controller\ParamQuery;
  6. use internship\model\ArticleDao;
  7. use n2n\context\attribute\Inject;
  8. use n2n\web\http\controller\ParamBody;
  9. use internship\bo\Article;
  10. use n2n\web\http\PageNotFoundException;
  11. use n2n\reflection\annotation\AnnoInit;
  12. use n2n\web\http\annotation\AnnoPath;
  13. use n2n\web\http\BadRequestException;
  14. use custom\model\TestModel;
  15. /**
  16. * REST Controller
  17. * https://dev.n2n.rocks/de/n2n/docs/rest
  18. **/
  19. class ArticleControllerDavid extends ControllerAdapter {
  20. private static function _annos(AnnoInit $ai) {
  21. $ai->m('anno', new AnnoPath('param1:*/const/param2:*'));
  22. $ai->m('holeradio', new AnnoPath ('param1:#^[a-z3-9]+$#/holeradio/params+:#^[1-9]?[0-9]$#'));
  23. }
  24. #[Inject]
  25. private ArticleDao $articleDao;
  26. public function anno($param1, $param2) {
  27. echo 'anno controller function David <br/>';
  28. echo 'param1: ' . $param1 . ' param2: ' . $param2;
  29. }
  30. public function holeradio($param1, array $params) {
  31. if (array_sum($params) > '999') {
  32. throw new BadRequestException('sum bigger than 999');
  33. }
  34. echo 'param1: ' . $param1 . '<br/>';
  35. echo 'params: ' . implode(', ', $params) .' sum: '. array_sum($params);
  36. }
  37. public function index(ParamQuery $param1 = null, ParamQuery $param2 = null) {
  38. echo 'Index controller function David <br/>';
  39. echo 'param1: ' . $param1 . ' param2: ' . $param2;
  40. }
  41. public function doDetail(ParamPath $param1 = null, ParamPath $param2 = null, ParamPath $param3 = null) {
  42. echo 'doDetail controller function David <br/>';
  43. echo 'param1: ' . $param1 . ' param2: ' . $param2 . ' param3: ' . $param3;
  44. }
  45. public function doAdvancedDetail(ParamQuery $param1 = null, ParamQuery $param2 = null, ParamQuery $param3 = null) {
  46. echo 'doAdvancedDetail controller function David <br/>';
  47. echo 'param1: ' . $param1 . ' param2: ' . $param2 . ' param3: ' . $param3;
  48. }
  49. public function doHallo(ParamPath $test3 = null, ParamQuery $param1 = null, ParamQuery $param2 = null) {
  50. echo 'doHallo controller function David <br/>';
  51. if ($test3 !== null) {
  52. if ($test3?->toString() !== 'test3') {
  53. throw new PageNotFoundException('not test3');
  54. }
  55. echo 'ParamPath = '. $test3. '<br/>';
  56. }
  57. echo 'param1: ' . $param1 . ' param2: ' . $param2;
  58. }
  59. #[Inject]
  60. private TestModel $testModel;
  61. public function doHuii(DavidDelegateController $davidDelegateController,
  62. $param, array $delegateParams = null) {
  63. echo 'Test 1: ' . $this->testModel->getTest() . '<br/>';
  64. $this->delegate($davidDelegateController, 2);
  65. }
  66. public function doHoi(DavidDelegateController $davidDelegateController, array $delegateParams = null) {
  67. echo 'Test 1: ' . $this->testModel->getTest() . '<br/>';
  68. $this->testModel->setTest('value ' . uniqid());
  69. $this->delegate($davidDelegateController);
  70. }
  71. function getDoArticle(int $articleId): void {
  72. echo 'hallo';
  73. }
  74. }
  75. class DavidDelegateController extends ControllerAdapter {
  76. public function doBaz(TestModel $testModel, $param = null) {
  77. echo 'Test 2: ' . $testModel->getTest(). '<br/>';
  78. echo 'param: ' . $param;
  79. }
  80. public function index(array $params = null) {
  81. echo 'delegate is cool';
  82. if($params !== null) {
  83. echo '<br/>' . 'params: ' . implode(', ', $params);
  84. }
  85. }
  86. }