Annotate IContainer so Psalm knows what resove and query returntags/v21.0.0beta1
@@ -695,7 +695,7 @@ class Manager implements IManager { | |||
} | |||
/** | |||
* @return IEntity[] | |||
* @return ICheck[] | |||
*/ | |||
protected function getBuildInChecks(): array { | |||
try { |
@@ -859,6 +859,7 @@ class OC { | |||
} | |||
private static function registerAppRestrictionsHooks() { | |||
/** @var \OC\Group\Manager $groupManager */ | |||
$groupManager = self::$server->query(\OCP\IGroupManager::class); | |||
$groupManager->listen('\OC\Group', 'postDelete', function (\OCP\IGroup $group) { | |||
$appManager = self::$server->getAppManager(); |
@@ -34,6 +34,7 @@ namespace OC\AppFramework; | |||
use OC\AppFramework\DependencyInjection\DIContainer; | |||
use OC\AppFramework\Http\Dispatcher; | |||
use OC\AppFramework\Http\Request; | |||
use OC\HintException; | |||
use OCP\AppFramework\Http; | |||
use OCP\AppFramework\Http\ICallbackResponse; | |||
@@ -114,9 +115,13 @@ class App { | |||
*/ | |||
public static function main(string $controllerName, string $methodName, DIContainer $container, array $urlParams = null) { | |||
if (!is_null($urlParams)) { | |||
$container->query(IRequest::class)->setUrlParameters($urlParams); | |||
/** @var Request $request */ | |||
$request = $container->query(IRequest::class); | |||
$request->setUrlParameters($urlParams); | |||
} elseif (isset($container['urlParams']) && !is_null($container['urlParams'])) { | |||
$container->query(IRequest::class)->setUrlParameters($container['urlParams']); | |||
/** @var Request $request */ | |||
$request = $container->query(IRequest::class); | |||
$request->setUrlParameters($container['urlParams']); | |||
} | |||
$appName = $container['AppName']; | |||
@@ -68,14 +68,14 @@ class Search implements ISearch { | |||
foreach ($this->pluginList[$type] as $plugin) { | |||
/** @var ISearchPlugin $searchPlugin */ | |||
$searchPlugin = $this->c->resolve($plugin); | |||
$hasMoreResults |= $searchPlugin->search($search, $limit, $offset, $searchResult); | |||
$hasMoreResults = $searchPlugin->search($search, $limit, $offset, $searchResult) || $hasMoreResults; | |||
} | |||
} | |||
// Get from lookup server, not a separate share type | |||
if ($lookup) { | |||
$searchPlugin = $this->c->resolve(LookupPlugin::class); | |||
$hasMoreResults |= $searchPlugin->search($search, $limit, $offset, $searchResult); | |||
$hasMoreResults = $searchPlugin->search($search, $limit, $offset, $searchResult) || $hasMoreResults; | |||
} | |||
// sanitizing, could go into the plugins as well |
@@ -52,10 +52,14 @@ use Psr\Container\ContainerInterface; | |||
interface IContainer extends ContainerInterface { | |||
/** | |||
* @template T | |||
* | |||
* If a parameter is not registered in the container try to instantiate it | |||
* by using reflection to find out how to build the class | |||
* @param string $name the class name to resolve | |||
* @psalm-param string|class-string<T> $name | |||
* @return \stdClass | |||
* @psalm-return ($name is class-string ? T : mixed) | |||
* @since 8.2.0 | |||
* @deprecated 20.0.0 use \Psr\Container\ContainerInterface::get | |||
* @throws ContainerExceptionInterface if the class could not be found or instantiated | |||
@@ -66,9 +70,13 @@ interface IContainer extends ContainerInterface { | |||
/** | |||
* Look up a service for a given name in the container. | |||
* | |||
* @template T | |||
* | |||
* @param string $name | |||
* @psalm-param string|class-string<T> $name | |||
* @param bool $autoload Should we try to autoload the service. If we are trying to resolve built in types this makes no sense for example | |||
* @return mixed | |||
* @psalm-return ($name is class-string ? T : mixed) | |||
* @throws ContainerExceptionInterface if the query could not be resolved | |||
* @throws QueryException if the query could not be resolved | |||
* @since 6.0.0 |