* @author Thomas Müller * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 * * This code is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License, version 3, * as published by the Free Software Foundation. * * This program 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, version 3, * along with this program. If not, see * */ // use OCP namespace for all classes that are considered public. // This means that they should be used by apps instead of the internal ownCloud classes namespace OCP; /** * Class IContainer * * IContainer is the basic interface to be used for any internal dependency injection mechanism * * @package OCP */ interface IContainer { /** * Look up a service for a given name in the container. * * @param string $name * @return mixed */ function query($name); /** * A value is stored in the container with it's corresponding name * * @param string $name * @param mixed $value * @return void */ function registerParameter($name, $value); /** * A service is registered in the container where a closure is passed in which will actually * create the service on demand. * In case the parameter $shared is set to true (the default usage) the once created service will remain in * memory and be reused on subsequent calls. * In case the parameter is false the service will be recreated on every call. * * @param string $name * @param \Closure $closure * @param bool $shared * @return void */ function registerService($name, \Closure $closure, $shared = true); }