Make the bootstrap context return ContainerInterface instances
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
This commit is contained in:
parent
9a7a8b6e38
commit
e029055e76
|
@ -26,24 +26,24 @@ declare(strict_types=1);
|
|||
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) {
|
||||
|
|
|
@ -27,17 +27,17 @@ namespace OC\AppFramework\Bootstrap;
|
|||
|
||||
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;
|
||||
}
|
||||
|
||||
|
@ -47,14 +47,14 @@ class FunctionInjector {
|
|||
// 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()) {
|
||||
|
|
|
@ -120,6 +120,7 @@ class App {
|
|||
/**
|
||||
* @return IAppContainer
|
||||
* @since 6.0.0
|
||||
* @todo make this return a ContainerInterface as well
|
||||
*/
|
||||
public function getContainer(): IAppContainer {
|
||||
return $this->container;
|
||||
|
|
|
@ -41,20 +41,20 @@ interface IBootContext {
|
|||
*
|
||||
* 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
|
||||
|
|
Loading…
Reference in New Issue