. * */ namespace OCP\AppFramework; use OC\AppFramework\routing\RouteConfig; /** * Class App * @package OCP\AppFramework * * Any application must inherit this call - all controller instances to be used are * to be registered using IContainer::registerService */ class App { /** * @param array $urlParams an array with variables extracted from the routes */ public function __construct($appName, $urlParams = array()) { $this->container = new \OC\AppFramework\DependencyInjection\DIContainer($appName, $urlParams); } private $container; /** * @return IAppContainer */ public function getContainer() { return $this->container; } /** * This function is to be called * @param \OC_Router $router * @param array $routes */ public function registerRoutes($router, $routes) { $routeConfig = new RouteConfig($this->container, $router, $routes); $routeConfig->register(); } /** * This function is called by the routing component to fire up the frameworks dispatch mechanism. * * Example code in routes.php of the task app: * $this->create('tasks_index', '/')->get()->action( * function($params){ * $app = new TaskApp($params); * $app->dispatch('PageController', 'index'); * } * ); * * * Example for for TaskApp implementation: * class TaskApp extends \OCP\AppFramework\App { * * public function __construct($params){ * parent::__construct('tasks', $params); * * $this->getContainer()->registerService('PageController', function(IAppContainer $c){ * $a = $c->query('API'); * $r = $c->query('Request'); * return new PageController($a, $r); * }); * } * } * * @param string $controllerName the name of the controller under which it is * stored in the DI container * @param string $methodName the method that you want to call */ public function dispatch($controllerName, $methodName) { \OC\AppFramework\App::main($controllerName, $methodName, $this->container); } }