From 3166bc92b9b6be1184898ea33799dd8deedff3ce Mon Sep 17 00:00:00 2001 From: Yuri Kuznetsov Date: Tue, 8 Mar 2022 14:25:59 +0200 Subject: [PATCH] type fixes --- application/Espo/Core/Container.php | 30 +++++++++-- .../Espo/Core/Container/Configuration.php | 50 +++++++++++++++++++ .../Core/Container/ContainerConfiguration.php | 2 +- application/Espo/Core/Portal/Acl.php | 20 ++++++-- application/Espo/Core/Portal/AclManager.php | 2 +- application/Espo/Core/Portal/Application.php | 5 +- 6 files changed, 99 insertions(+), 10 deletions(-) create mode 100644 application/Espo/Core/Container/Configuration.php diff --git a/application/Espo/Core/Container.php b/application/Espo/Core/Container.php index 8a18f4d77a..ce77b7c2be 100644 --- a/application/Espo/Core/Container.php +++ b/application/Espo/Core/Container.php @@ -32,6 +32,7 @@ namespace Espo\Core; use Espo\Core\InjectableFactory; use Espo\Core\Container\Loader; use Espo\Core\Container\Container as ContainerInterface; +use Espo\Core\Container\Configuration; use Espo\Core\Binding\BindingContainer; use ReflectionClass; @@ -45,18 +46,33 @@ use ReflectionNamedType; */ class Container implements ContainerInterface { + /** + * @var array + */ private $data = []; + /** + * @var array> + */ private $classCache = []; + /** + * @var array> + */ private $loaderClassNames; - private $configuration = null; + private ?Configuration $configuration = null; - private $bindingContainer; + private ?BindingContainer $bindingContainer = null; - private $injectableFactory; + private InjectableFactory $injectableFactory; + /** + * @param class-string $configurationClassName + * @param array> $loaderClassNames + * @param array $services + * @throws RuntimeException + */ public function __construct( string $configurationClassName, array $loaderClassNames = [], @@ -172,6 +188,10 @@ class Container implements ContainerInterface $this->classCache[$name] = new ReflectionClass($className); } + /** + * @param class-string $loaderClassName + * @throws RuntimeException + */ private function initClassByLoader(string $name, string $loaderClassName): void { $loaderClass = new ReflectionClass($loaderClassName); @@ -196,6 +216,7 @@ class Container implements ContainerInterface /** * Get a class of a service. * + * @return ReflectionClass * @throws RuntimeException If not gettable. */ public function getClass(string $name): ReflectionClass @@ -245,6 +266,9 @@ class Container implements ContainerInterface return $this->injectableFactory->create($loaderClassName); } + /** + * @return ?class-string + */ private function getLoaderClassName(string $name): ?string { return $this->loaderClassNames[$name] ?? $this->configuration->getLoaderClassName($name); diff --git a/application/Espo/Core/Container/Configuration.php b/application/Espo/Core/Container/Configuration.php new file mode 100644 index 0000000000..65b1ed947d --- /dev/null +++ b/application/Espo/Core/Container/Configuration.php @@ -0,0 +1,50 @@ +aclManager->checkReadOnlyAccount($this->user, $scope); + /** @var AclManager */ + $aclManager = $this->aclManager; + + return $aclManager->checkReadOnlyAccount($this->user, $scope); } /** @@ -55,7 +58,10 @@ class Acl extends BaseAcl */ public function checkReadOnlyContact(string $scope): bool { - return $this->aclManager->checkReadOnlyContact($this->user, $scope); + /** @var AclManager */ + $aclManager = $this->aclManager; + + return $aclManager->checkReadOnlyContact($this->user, $scope); } /** @@ -63,7 +69,10 @@ class Acl extends BaseAcl */ public function checkOwnershipAccount(Entity $entity): bool { - return $this->aclManager->checkOwnershipAccount($this->user, $entity); + /** @var AclManager */ + $aclManager = $this->aclManager; + + return $aclManager->checkOwnershipAccount($this->user, $entity); } /** @@ -71,7 +80,10 @@ class Acl extends BaseAcl */ public function checkOwnershipContact(Entity $entity): bool { - return $this->aclManager->checkOwnershipContact($this->user, $entity); + /** @var AclManager */ + $aclManager = $this->aclManager; + + return $aclManager->checkOwnershipContact($this->user, $entity); } /** diff --git a/application/Espo/Core/Portal/AclManager.php b/application/Espo/Core/Portal/AclManager.php index 57605236d3..e4232e6100 100644 --- a/application/Espo/Core/Portal/AclManager.php +++ b/application/Espo/Core/Portal/AclManager.php @@ -65,7 +65,7 @@ class AclManager extends InternalAclManager */ protected $userAclClassName = Acl::class; - private ?InternalAclManager $internalAclManager = null; + private InternalAclManager $internalAclManager; private ?Portal $portal = null; diff --git a/application/Espo/Core/Portal/Application.php b/application/Espo/Core/Portal/Application.php index 0854d5729d..94d01dc0b3 100644 --- a/application/Espo/Core/Portal/Application.php +++ b/application/Espo/Core/Portal/Application.php @@ -91,7 +91,10 @@ class Application extends BaseApplication throw new Forbidden("Portal {$portalId} is not active."); } - $this->container->setPortal($portal); + /** @var PortalContainer */ + $container = $this->container; + + $container->setPortal($portal); } protected function initPreloads(): void