fork download
  1. <?php
  2.  
  3. $app->get('/main[/{action}]', function ($request, $response, $args) use ($app) {
  4.  
  5. if( isset($args['action'])){
  6. $path = $request->getUri()->getPath();
  7.  
  8. $name_controller = app\Controllers\AppController::get_controller_name($path);
  9.  
  10. if( file_exists ( APP . "\controllers" . '\\' . $name_controller.'.php' ) ){
  11.  
  12. $controller = 'app\controllers\\' . $name_controller;
  13. $action = $args['action'];
  14. $obj = new $controller;
  15.  
  16. if ( method_exists($obj , $action ) ){
  17.  
  18. //в контроллер передаю $this, и работает
  19.  
  20. //но если $app передать - то не работает, хотя я в use его определил
  21. //почему?
  22. $response = $obj->$action($request, $response, $this);
  23. //return $response;
  24. }else{
  25. echo 'Такого метода нет';
  26. }
  27. }else{
  28. echo 'Контроллер - ' . APP . '\Main' . '- не существует';
  29. }
  30.  
  31. }else{
  32.  
  33. $response = $this->view->render($response, "main.php", ["arr" => [1,2,3,4,5]]);
  34. //в документации вроде сказано что $response обязан быть возвращенным
  35. //однако никакой разници что с return что без я не заметил
  36. //return $response;
  37.  
  38. }
  39. });
Runtime error #stdin #stdout #stderr 0.02s 24464KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
PHP Notice:  Undefined variable: app in /home/AJvXh0/prog.php on line 3
PHP Fatal error:  Uncaught Error: Call to a member function get() on null in /home/AJvXh0/prog.php:3
Stack trace:
#0 {main}
  thrown in /home/AJvXh0/prog.php on line 3