namespace OC\AppFramework\Bootstrap;
use OCP\AppFramework\Bootstrap\IBootContext;
-use OCP\AppFramework\IAppContainer;
use OCP\IServerContainer;
+use Psr\Container\ContainerInterface;
class BootContext implements IBootContext {
- /** @var IAppContainer */
+ /** @var ContainerInterface */
private $appContainer;
- public function __construct(IAppContainer $appContainer) {
+ public function __construct(ContainerInterface $appContainer) {
$this->appContainer = $appContainer;
}
- public function getAppContainer(): IAppContainer {
+ public function getAppContainer(): ContainerInterface {
return $this->appContainer;
}
- public function getServerContainer(): IServerContainer {
- return $this->appContainer->getServer();
+ public function getServerContainer(): ContainerInterface {
+ return $this->appContainer->get(IServerContainer::class);
}
public function injectFn(callable $fn) {
use Closure;
use OCP\AppFramework\QueryException;
-use OCP\IContainer;
+use Psr\Container\ContainerInterface;
use ReflectionFunction;
use ReflectionParameter;
use function array_map;
class FunctionInjector {
- /** @var IContainer */
+ /** @var ContainerInterface */
private $container;
- public function __construct(IContainer $container) {
+ public function __construct(ContainerInterface $container) {
$this->container = $container;
}
// First we try by type (more likely these days)
if (($type = $param->getType()) !== null) {
try {
- return $this->container->query($type->getName());
+ return $this->container->get($type->getName());
} catch (QueryException $ex) {
// Ignore and try name as well
}
}
// Second we try by name (mostly for primitives)
try {
- return $this->container->query($param->getName());
+ return $this->container->get($param->getName());
} catch (QueryException $ex) {
// As a last resort we pass `null` if allowed
if ($type !== null && $type->allowsNull()) {
/**
* @return IAppContainer
* @since 6.0.0
+ * @todo make this return a ContainerInterface as well
*/
public function getContainer(): IAppContainer {
return $this->container;
*
* Useful to register and query app-specific services
*
- * @return IAppContainer|ContainerInterface
+ * @return ContainerInterface|IAppContainer
* @since 20.0.0
*/
- public function getAppContainer(): IAppContainer;
+ public function getAppContainer(): ContainerInterface;
/**
* Get hold of the server DI container
*
* Useful to register and query system-wide services
*
- * @return IServerContainer
+ * @return ContainerInterface|IServerContainer
* @since 20.0.0
*/
- public function getServerContainer(): IServerContainer;
+ public function getServerContainer(): ContainerInterface;
/**
* Invoke the given callable and inject all parameters based on their types