OXID eShop CE  6.1.5
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)
 
 getModulesArray (\OxidEsales\Eshop\Core\Module\ModuleVariablesLocator $variablesLocator)
 
 getConfigBlDoNotDisableModuleOnError ()
 
 isUnitTest ()
 

Private Member Functions

 backwardsCompatibleCreateClassExtension ($parentClass, $moduleClassPath)
 

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.

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)

Disables module, adds to aDisabledModules config.

Parameters
string$modulePathFull module path
Returns
bool

◆ filterInactiveExtensions()

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

Checks if module is disabled, added to aDisabledModules config.

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

◆ getConfigBlDoNotDisableModuleOnError()

OxidEsales\EshopCommunity\Core\Module\ModuleChainsGenerator::getConfigBlDoNotDisableModuleOnError ( )
protected
Returns
mixed

◆ getDisabledModuleIds()

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

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

Returns
array

◆ getFullChain()

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

Build full class chain.

Parameters
string$className
string$classAlias
Returns
array

◆ getModuleDirectoryByModuleId()

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

SPIKE: extract function to match moduleId with installation path Example: aModulePaths = array('MyTestModule' => 'myvendor/mymodule', 'oepaypal' => 'oe/oepaypal')

TODD: Think about case sensitivity issues

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

Parameters
string$moduleId
Returns
string

◆ getModulesArray()

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

Getter for module array.

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

◆ getModuleVariablesLocator()

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

Getter for ModuleVariablesLocator.

Returns
\OxidEsales\Eshop\Core\Module\ModuleVariablesLocator

◆ 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

If blDoNotDisableModuleOnError config value is false, disables bad module. To avoid problems with unit tests it only throw an exception if class does not exist.

Parameters
string$moduleClass
Exceptions

Member Data Documentation

◆ $moduleVariablesLocator

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

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