<?php
$app -> get ( '/main[/{action}]' , function ( $request , $response , $args ) use ( $app ) {
if ( isset ( $args [ 'action' ] ) ) { $path = $request -> getUri ( ) -> getPath ( ) ;
$name_controller = app\Controllers\AppController:: get_controller_name ( $path ) ;
if ( file_exists ( APP
. "\controllers" . '\\' . $name_controller . '.php' ) ) {
$controller = 'app\controllers\\' . $name_controller ;
$action = $args [ 'action' ] ;
$obj = new $controller ;
//в контроллер передаю $this, и работает
//но если $app передать - то не работает, хотя я в use его определил
//почему?
$response = $obj -> $action ( $request , $response , $this ) ;
//return $response;
} else {
echo 'Такого метода нет' ;
}
} else {
echo 'Контроллер - ' . APP . '\Main' . '- не существует' ;
}
} else {
$response = $this -> view -> render ( $response , "main.php" , [ "arr" => [ 1 , 2 , 3 , 4 , 5 ] ] ) ;
//в документации вроде сказано что $response обязан быть возвращенным
//однако никакой разници что с return что без я не заметил
//return $response;
}
} ) ;
PD9waHAKCiRhcHAtPmdldCgnL21haW5bL3thY3Rpb259XScsIGZ1bmN0aW9uICgkcmVxdWVzdCwgJHJlc3BvbnNlLCAkYXJncykgdXNlICgkYXBwKSB7CgoJaWYoIGlzc2V0KCRhcmdzWydhY3Rpb24nXSkpewoJCSRwYXRoID0gJHJlcXVlc3QtPmdldFVyaSgpLT5nZXRQYXRoKCk7CgkKCQkkbmFtZV9jb250cm9sbGVyID0gYXBwXENvbnRyb2xsZXJzXEFwcENvbnRyb2xsZXI6OmdldF9jb250cm9sbGVyX25hbWUoJHBhdGgpOwoJCgkJaWYoIGZpbGVfZXhpc3RzICggQVBQIC4gIlxjb250cm9sbGVycyIgLiAnXFwnIC4gJG5hbWVfY29udHJvbGxlci4nLnBocCcgKSApewoJCQkKCQkJJGNvbnRyb2xsZXIgPSAnYXBwXGNvbnRyb2xsZXJzXFwnIC4gJG5hbWVfY29udHJvbGxlcjsKCQkJJGFjdGlvbiA9ICRhcmdzWydhY3Rpb24nXTsKCQkJJG9iaiA9IG5ldyAkY29udHJvbGxlcjsKCgkJCWlmICggbWV0aG9kX2V4aXN0cygkb2JqICwgJGFjdGlvbiApICl7CQoJCQkJCgkJCQkvL9CyINC60L7QvdGC0YDQvtC70LvQtdGAINC/0LXRgNC10LTQsNGOICR0aGlzLCDQuCDRgNCw0LHQvtGC0LDQtdGCCgkJCQkKCQkJCS8v0L3QviDQtdGB0LvQuCAkYXBwINC/0LXRgNC10LTQsNGC0YwgLSDRgtC+INC90LUg0YDQsNCx0L7RgtCw0LXRgiwg0YXQvtGC0Y8g0Y8g0LIgdXNlINC10LPQviDQvtC/0YDQtdC00LXQu9C40LsKCQkJCS8v0L/QvtGH0LXQvNGDPwoJCQkJJHJlc3BvbnNlID0gJG9iai0+JGFjdGlvbigkcmVxdWVzdCwgJHJlc3BvbnNlLCAkdGhpcyk7CgkJCQkvL3JldHVybiAkcmVzcG9uc2U7CQoJCQl9ZWxzZXsKCQkJCWVjaG8gJ9Ci0LDQutC+0LPQviDQvNC10YLQvtC00LAg0L3QtdGCJzsKCQkJCWV4aXQ7CgkJCX0KCQl9ZWxzZXsKCQkJZWNobyAn0JrQvtC90YLRgNC+0LvQu9C10YAgLSAnIC4gQVBQIC4gJ1xNYWluJyAuICctINC90LUg0YHRg9GJ0LXRgdGC0LLRg9C10YInOwoJCQlleGl0OwoJCX0KCgl9ZWxzZXsKCgkJJHJlc3BvbnNlID0gJHRoaXMtPnZpZXctPnJlbmRlcigkcmVzcG9uc2UsICJtYWluLnBocCIsIFsiYXJyIiA9PiBbMSwyLDMsNCw1XV0pOyAKCQkvL9CyINC00L7QutGD0LzQtdC90YLQsNGG0LjQuCDQstGA0L7QtNC1INGB0LrQsNC30LDQvdC+INGH0YLQviAkcmVzcG9uc2Ug0L7QsdGP0LfQsNC9INCx0YvRgtGMINCy0L7Qt9Cy0YDQsNGJ0LXQvdC90YvQvAoJCS8v0L7QtNC90LDQutC+INC90LjQutCw0LrQvtC5INGA0LDQt9C90LjRhtC4INGH0YLQviDRgSByZXR1cm4g0YfRgtC+INCx0LXQtyDRjyDQvdC1INC30LDQvNC10YLQuNC7CgkJLy9yZXR1cm4gJHJlc3BvbnNlOwoKCX0KfSk7