diff --git a/application/Espo/Classes/AppInfo/Binding.php b/application/Espo/Classes/AppInfo/Binding.php index 21887b0653..f1a0549b31 100644 --- a/application/Espo/Classes/AppInfo/Binding.php +++ b/application/Espo/Classes/AppInfo/Binding.php @@ -30,7 +30,6 @@ namespace Espo\Classes\AppInfo; use Espo\Core\{ - Utils\File\Manager as FileManager, Utils\Module, Binding\EspoBindingLoader, Binding\Binding as BindingItem, @@ -39,20 +38,18 @@ use Espo\Core\{ class Binding { - private $fileManager; + private $module; - public function __construct(FileManager $fileManager) + public function __construct(Module $module) { - $this->fileManager = $fileManager; + $this->module = $module; } public function process(Params $params) : ?string { $result = ''; - $bindingLoader = new EspoBindingLoader( - new Module($this->fileManager) - ); + $bindingLoader = new EspoBindingLoader($this->module); $data = $bindingLoader->load(); diff --git a/application/Espo/Core/Binding/DefaultBinding.php b/application/Espo/Core/Binding/DefaultBinding.php index afb650b1ba..0d2cd92459 100644 --- a/application/Espo/Core/Binding/DefaultBinding.php +++ b/application/Espo/Core/Binding/DefaultBinding.php @@ -48,6 +48,11 @@ class DefaultBinding implements BindingProcessor 'container' ); + $binder->bindService( + 'Espo\\Core\\Utils\\Module', + 'module' + ); + $binder->bindService( 'Espo\\ORM\\EntityManager', 'entityManager' diff --git a/application/Espo/Core/Binding/EspoBindingLoader.php b/application/Espo/Core/Binding/EspoBindingLoader.php index 4ce2176433..9383170cc2 100644 --- a/application/Espo/Core/Binding/EspoBindingLoader.php +++ b/application/Espo/Core/Binding/EspoBindingLoader.php @@ -29,9 +29,7 @@ namespace Espo\Core\Binding; -use Espo\Core\{ - Utils\Module, -}; +use Espo\Core\Utils\Module; class EspoBindingLoader implements BindingLoader { diff --git a/application/Espo/Core/Container/ContainerBuilder.php b/application/Espo/Core/Container/ContainerBuilder.php index cdb8b1b1dc..652b9a0b3a 100644 --- a/application/Espo/Core/Container/ContainerBuilder.php +++ b/application/Espo/Core/Container/ContainerBuilder.php @@ -60,6 +60,8 @@ class ContainerBuilder private $dataCacheClassName = DataCache::class; + private $moduleClassName = Module::class; + private $bindingLoader = null; private $services = []; @@ -148,16 +150,19 @@ class ContainerBuilder new $this->dataCacheClassName($fileManager) ); + $useCache = $config->get('useCache') ?? false; + + $module = $this->services['module'] ?? ( + new $this->moduleClassName($fileManager, $dataCache, $useCache) + ); + $this->services['config'] = $config; $this->services['fileManager'] = $fileManager; $this->services['dataCache'] = $dataCache; - - $useCache = $config->get('useCache') ?? false; + $this->services['module'] = $module; $bindingLoader = $this->bindingLoader ?? ( - new EspoBindingLoader( - new Module($fileManager, $dataCache, $useCache) - ) + new EspoBindingLoader($module) ); $bindingContainer = new BindingContainer($bindingLoader->load()); diff --git a/application/Espo/Core/Utils/Metadata.php b/application/Espo/Core/Utils/Metadata.php index a2136af8e5..b1ad12ec96 100644 --- a/application/Espo/Core/Utils/Metadata.php +++ b/application/Espo/Core/Utils/Metadata.php @@ -75,15 +75,15 @@ class Metadata FileManager $fileManager, DataCache $dataCache, ResourceReader $resourceReader, + Module $module, bool $useCache = false ){ $this->fileManager = $fileManager; $this->dataCache = $dataCache; $this->resourceReader = $resourceReader; + $this->module = $module; $this->useCache = $useCache; - - $this->module = new Module($this->fileManager, $this->dataCache, $useCache); } private function getMetadataHelper(): Helper diff --git a/tests/unit/Espo/Core/Utils/MetadataTest.php b/tests/unit/Espo/Core/Utils/MetadataTest.php index 366ba313ea..fa83c84361 100644 --- a/tests/unit/Espo/Core/Utils/MetadataTest.php +++ b/tests/unit/Espo/Core/Utils/MetadataTest.php @@ -38,16 +38,15 @@ use Espo\Core\Utils\DataCache; use Espo\Core\Utils\File\UnifierObj; use Espo\Core\Utils\File\Unifier; use Espo\Core\Utils\Module; +use Espo\Core\Utils\Module\PathProvider as ModulePathProvider; use Espo\Core\Utils\Resource\Reader; use Espo\Core\Utils\Resource\PathProvider; -use Espo\Core\Utils\Module\PathProvider as ModulePathProvider; - class MetadataTest extends \PHPUnit\Framework\TestCase { - protected $object; + private $object; - protected $reflection; + private $reflection; protected function setUp(): void { @@ -68,7 +67,7 @@ class MetadataTest extends \PHPUnit\Framework\TestCase $reader = new Reader($unifier, $unifierObj); - $this->object = new Metadata($this->fileManager, $this->dataCache, $reader, true); + $this->object = new Metadata($this->fileManager, $this->dataCache, $reader, $module, true); $this->reflection = new ReflectionHelper($this->object);