server/lib/public/appframework/App.php
2013-08-21 01:02:15 +02:00

61 lines
1.7 KiB
PHP

<?php
namespace OCP\AppFramework;
/**
* 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 {
public function __construct($appName) {
$this->container = new \OC\AppFramework\DependencyInjection\DIContainer($appName);
}
private $container;
/**
* @return IAppContainer
*/
public function getContainer() {
return $this->container;
}
/**
* 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();
* $app->dispatch('PageController', 'index', $params);
* }
* );
*
*
* Example for for TaskApp implementation:
* class TaskApp extends \OCP\AppFramework\App {
*
* public function __construct(){
* parent::__construct('tasks');
*
* $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
* @param array $urlParams an array with variables extracted from the routes
*/
public function dispatch($controllerName, $methodName, array $urlParams) {
\OC\AppFramework\App::main($controllerName, $methodName, $urlParams, $this->container);
}
}