<?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;

			if ( method_exists($obj , $action ) ){	
				
				//в контроллер передаю $this, и работает
				
				//но если $app передать - то не работает, хотя я в use его определил
				//почему?
				$response = $obj->$action($request, $response, $this);
				//return $response;	
			}else{
				echo 'Такого метода нет';
				exit;
			}
		}else{
			echo 'Контроллер - ' . APP . '\Main' . '- не существует';
			exit;
		}

	}else{

		$response = $this->view->render($response, "main.php", ["arr" => [1,2,3,4,5]]); 
		//в документации вроде сказано что $response обязан быть возвращенным
		//однако никакой разници что с return что без я не заметил
		//return $response;

	}
});