Blame view

sources/lib/public/appframework/app.php 3.2 KB
31b7f2792   Kload   Upgrade to ownclo...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
  <?php
  /**
   * ownCloud
   *
   * @author Thomas Müller
   * @copyright 2013 Thomas Müller deepdiver@owncloud.com
   *
   * This library is free software; you can redistribute it and/or
   * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
   * License as published by the Free Software Foundation; either
   * version 3 of the License, or any later version.
   *
   * This library is distributed in the hope that it will be useful,
   * but WITHOUT ANY WARRANTY; without even the implied warranty of
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
   *
   * You should have received a copy of the GNU Affero General Public
   * License along with this library.  If not, see <http://www.gnu.org/licenses/>.
   *
   */
  
  /**
   * Public interface of ownCloud for apps to use.
   * AppFramework/App class
   */
  
  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 to create single routes and restful routes based on the given $routes array.
  	 *
  	 * Example code in routes.php of tasks app (it will register two restful resources):
  	 * $routes = array(
  	 *		'resources' => array(
  	 *		'lists' => array('url' => '/tasklists'),
  	 *		'tasks' => array('url' => '/tasklists/{listId}/tasks')
  	 *	)
  	 *	);
  	 *
  	 * $a = new TasksApp();
  	 * $a->registerRoutes($this, $routes);
  	 *
6d9380f96   Cédric Dupont   Update sources OC...
70
  	 * @param \OCP\Route\IRouter $router
31b7f2792   Kload   Upgrade to ownclo...
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
  	 * @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);
  	}
  }