OXID eShop CE  6.4.2
OxidEsales\EshopCommunity\Core\Module\ModuleChainsGenerator Class Reference

Public Member Functions

 __construct ($moduleVariablesLocator)
 
 createClassChain ($className, $classAlias=null)
 
 getActiveChain ($className, $classAlias=null)
 
 getFullChain ($className, $classAlias)
 
 filterInactiveExtensions ($classChain)
 
 cleanModuleFromClassChain ($moduleId, array $classChain)
 
 getDisabledModuleIds ()
 
 getModuleDirectoryByModuleId ($moduleId)
 
 disableModule ($modulePath)
 
 getModuleVariablesLocator ()
 

Protected Member Functions

 createClassExtensions ($classChain, $baseClass)
 
 createClassExtension ($parentClass, $moduleClass)
 
 handleSpecialCases ($requestedClass)
 
 onModuleExtensionCreationError ($moduleClass)
 
 getClassExtensionChain (\OxidEsales\Eshop\Core\Module\ModuleVariablesLocator $variablesLocator)
 
 isUnitTest ()
 

Private Member Functions

 backwardsCompatibleCreateClassExtension ($parentClass, $moduleClassPath)
 
 getModuleActivationBridge ()
 
 getModuleConfigurationDaoBridge ()
 
 getShopConfigurationDaoBridge ()
 
 getModuleStateService ()
 
 getContainer ()
 

Private Attributes

 $moduleVariablesLocator
 

Detailed Description

Generates class chains for extended classes by modules. IMPORTANT: Due to the way the shop is prepared for testing, you must not use Registry::getConfig() in this class. oxNew will enter in an endless loop, if you try to do that.

Constructor & Destructor Documentation

◆ __construct()

OxidEsales\EshopCommunity\Core\Module\ModuleChainsGenerator::__construct (   $moduleVariablesLocator)
Parameters
\OxidEsales\Eshop\Core\Module\ModuleVariablesLocator$moduleVariablesLocator

Member Function Documentation

◆ backwardsCompatibleCreateClassExtension()

OxidEsales\EshopCommunity\Core\Module\ModuleChainsGenerator::backwardsCompatibleCreateClassExtension (   $parentClass,
  $moduleClassPath 
)
private

Backwards compatible self::createClassExtension

Parameters
string$parentClassName of the parent class
string$moduleClassPathPath of the module class as it is defined in metadata.php 'extend' section. This is not a valid file system path
Returns
bool
Deprecated:
since v6.0 (2017-03-14); This method will be removed in the future.

◆ cleanModuleFromClassChain()

OxidEsales\EshopCommunity\Core\Module\ModuleChainsGenerator::cleanModuleFromClassChain (   $moduleId,
array  $classChain 
)

Clean classes from chain for given module id. Classes might be in module chain by path (old way) or by module namespace(new way). This function removes all classes from class chain for classes inside a deactivated module's directory.

Deprecated:
since v6.4 (2019-05-22); If you want to clean a module from the class chain, deactivate the module.
Parameters
string$moduleId
array$classChain
Returns
array

◆ createClassChain()

OxidEsales\EshopCommunity\Core\Module\ModuleChainsGenerator::createClassChain (   $className,
  $classAlias = null 
)

Creates given class chains.

Parameters
string$classNameClass name.
string$classAliasClass alias, used for searching module extensions. Class is used if no alias given.
Returns
string

◆ createClassExtension()

OxidEsales\EshopCommunity\Core\Module\ModuleChainsGenerator::createClassExtension (   $parentClass,
  $moduleClass 
)
protected

Checks, if a given class can be loaded and create an alias for _parent. If the class cannot be loaded, some error handling is done.

See also
self::onModuleExtensionCreationError
self::handleSpecialCases

e.g. class suboutput1_parent extends oxoutput {} class suboutput2_parent extends suboutput1 {}

Parameters
string$parentClass
string$moduleClass
Exceptions

◆ createClassExtensions()

OxidEsales\EshopCommunity\Core\Module\ModuleChainsGenerator::createClassExtensions (   $classChain,
  $baseClass 
)
protected

Creates middle classes if needed.

Parameters
array$classChainModule names
string$baseClassOxid base class
Exceptions

◆ disableModule()

OxidEsales\EshopCommunity\Core\Module\ModuleChainsGenerator::disableModule (   $modulePath)

If the module is found in configuration, return value is always true. Independent if the module was in a active or inactive state previously.

Deprecated:
since v6.4.0 (2019-05-20). Use ModuleActivationServiceInterface instead.
Parameters
string$modulePathFull module path
Returns
bool

◆ filterInactiveExtensions()

OxidEsales\EshopCommunity\Core\Module\ModuleChainsGenerator::filterInactiveExtensions (   $classChain)

Checks if module is disabled, added to aDisabledModules config.

Deprecated:
since v6.4 (2019-05-22); There are only extensions of active modules in the class chain.
Parameters
array$classChainModule names
Returns
array

◆ getActiveChain()

OxidEsales\EshopCommunity\Core\Module\ModuleChainsGenerator::getActiveChain (   $className,
  $classAlias = null 
)

Assembles class chains.

Parameters
string$classNameClass name.
string$classAliasClass alias, used for searching module extensions. Class is used if no alias given.
Returns
array

◆ getClassExtensionChain()

OxidEsales\EshopCommunity\Core\Module\ModuleChainsGenerator::getClassExtensionChain ( \OxidEsales\Eshop\Core\Module\ModuleVariablesLocator  $variablesLocator)
protected

Only classes of active modules are considered.

Parameters
\OxidEsales\Eshop\Core\Module\ModuleVariablesLocator$variablesLocator
Returns
array

◆ getContainer()

OxidEsales\EshopCommunity\Core\Module\ModuleChainsGenerator::getContainer ( )
private
Returns
ContainerInterface

◆ getDisabledModuleIds()

OxidEsales\EshopCommunity\Core\Module\ModuleChainsGenerator::getDisabledModuleIds ( )

Get Ids of all deactivated module. If none are deactivated, returns an empty array.

Deprecated:
since v6.4 (2019-05-22); Use ShopConfigurationDaoBridgeInterface instead to get inactive modules.
Returns
array

◆ getFullChain()

OxidEsales\EshopCommunity\Core\Module\ModuleChainsGenerator::getFullChain (   $className,
  $classAlias 
)

Build full class chain.

Parameters
string$className
string$classAlias
Returns
array

◆ getModuleActivationBridge()

OxidEsales\EshopCommunity\Core\Module\ModuleChainsGenerator::getModuleActivationBridge ( )
private
Returns
ModuleActivationBridgeInterface

◆ getModuleConfigurationDaoBridge()

OxidEsales\EshopCommunity\Core\Module\ModuleChainsGenerator::getModuleConfigurationDaoBridge ( )
private
Returns
ModuleConfigurationDaoBridgeInterface

◆ getModuleDirectoryByModuleId()

OxidEsales\EshopCommunity\Core\Module\ModuleChainsGenerator::getModuleDirectoryByModuleId (   $moduleId)

Get module path relative to source/modules for given module id.

Deprecated:
since v6.4 (2019-05-22); Use ShopConfigurationDaoBridgeInterface instead.
Parameters
string$moduleId
Returns
string

◆ getModuleStateService()

OxidEsales\EshopCommunity\Core\Module\ModuleChainsGenerator::getModuleStateService ( )
private
Returns
ModuleStateServiceInterface

◆ getModuleVariablesLocator()

OxidEsales\EshopCommunity\Core\Module\ModuleChainsGenerator::getModuleVariablesLocator ( )

Getter for ModuleVariablesLocator.

Returns
\OxidEsales\Eshop\Core\Module\ModuleVariablesLocator

◆ getShopConfigurationDaoBridge()

OxidEsales\EshopCommunity\Core\Module\ModuleChainsGenerator::getShopConfigurationDaoBridge ( )
private
Returns
ShopConfigurationDaoBridgeInterface

◆ handleSpecialCases()

OxidEsales\EshopCommunity\Core\Module\ModuleChainsGenerator::handleSpecialCases (   $requestedClass)
protected

Special case is when oxconfig class is extended: we cant call "_disableModule" as it requires valid config object but we can't create it as module class extending it does not exist. So we will use original oxConfig object instead.

Parameters
string$requestedClassClass, for which extension chain was generated.

◆ isUnitTest()

OxidEsales\EshopCommunity\Core\Module\ModuleChainsGenerator::isUnitTest ( )
protected

Conveniance method for tests

Returns
bool

◆ onModuleExtensionCreationError()

OxidEsales\EshopCommunity\Core\Module\ModuleChainsGenerator::onModuleExtensionCreationError (   $moduleClass)
protected

Writes/logs an error on module extension creation problem

Parameters
string$moduleClass

Member Data Documentation

◆ $moduleVariablesLocator

OxidEsales\EshopCommunity\Core\Module\ModuleChainsGenerator::$moduleVariablesLocator
private

The documentation for this class was generated from the following file: