|
|
@@ -42,9 +42,8 @@
|
|
|
class BxDolModule extends BxDol
|
|
|
{
|
|
|
public $_aModule;
|
|
|
- public $_oDb;
|
|
|
- public $_oTemplate;
|
|
|
- public $_oConfig;
|
|
|
+ private $_aInstancesStorage = [];
|
|
|
+ private $_aInstancesToStore = ['_oDb' => '_initDb', '_oTemplate' => '_initTemplate', '_oConfig' => '_initConfig'];
|
|
|
|
|
|
/**
|
|
|
* constructor
|
|
|
@@ -52,25 +51,60 @@ class BxDolModule extends BxDol
|
|
|
public function __construct($aModule)
|
|
|
{
|
|
|
parent::__construct();
|
|
|
-
|
|
|
$this->_aModule = $aModule;
|
|
|
+ }
|
|
|
|
|
|
- $sClassPrefix = $aModule['class_prefix'];
|
|
|
- $sClassPath = BX_DIRECTORY_PATH_MODULES . $aModule['path'] . 'classes/';
|
|
|
+ public function __get($sName) {
|
|
|
+ if (isset($this->_aInstancesToStore[$sName])) {
|
|
|
+ $sMethod = $this->_aInstancesToStore[$sName];
|
|
|
+ return $this->_aInstancesStorage[$sName] ??= $this->$sMethod();
|
|
|
+ }
|
|
|
+ throw new \Exception("Unknown property: $sName");
|
|
|
+ }
|
|
|
|
|
|
- $sClassName = $sClassPrefix . 'Config';
|
|
|
- require_once($sClassPath . $sClassName . '.php');
|
|
|
- $this->_oConfig = new $sClassName($aModule);
|
|
|
+ public function __set($sName, $o) {
|
|
|
+ if (isset($this->_aInstancesToStore[$sName])) {
|
|
|
+ $this->_aInstancesStorage[$sName] = $o;
|
|
|
+ }
|
|
|
+ throw new \Exception("Unknown property: $sName");
|
|
|
+ }
|
|
|
+
|
|
|
+ private function _initDb():BxDolModuleDb {
|
|
|
+ $sClassPrefix = $this->_aModule['class_prefix'];
|
|
|
+ $sClassPath = BX_DIRECTORY_PATH_MODULES . $this->_aModule['path'] . 'classes/';
|
|
|
|
|
|
$sClassName = $sClassPrefix . 'Db';
|
|
|
require_once($sClassPath . $sClassName . '.php');
|
|
|
- $this->_oDb = new $sClassName($this->_oConfig);
|
|
|
+
|
|
|
+ /** @var BxDolDb $oDb */
|
|
|
+ $oDb = new $sClassName($this->_oConfig);
|
|
|
+ return $oDb;
|
|
|
+ }
|
|
|
+
|
|
|
+ private function _initConfig():BxDolModuleConfig {
|
|
|
+ $sClassPrefix = $this->_aModule['class_prefix'];
|
|
|
+ $sClassPath = BX_DIRECTORY_PATH_MODULES . $this->_aModule['path'] . 'classes/';
|
|
|
+
|
|
|
+ $sClassName = $sClassPrefix . 'Config';
|
|
|
+ require_once($sClassPath . $sClassName . '.php');
|
|
|
+
|
|
|
+ /** @var BxDolModuleConfig $oConfig */
|
|
|
+ $oConfig = new $sClassName($this->_aModule);
|
|
|
+ return $oConfig;
|
|
|
+ }
|
|
|
+
|
|
|
+ private function _initTemplate():BxDolModuleProxy {
|
|
|
+ $sClassPrefix = $this->_aModule['class_prefix'];
|
|
|
+ $sClassPath = BX_DIRECTORY_PATH_MODULES . $this->_aModule['path'] . 'classes/';
|
|
|
|
|
|
$sClassName = $sClassPrefix . 'Template';
|
|
|
require_once($sClassPath . $sClassName . '.php');
|
|
|
+
|
|
|
+ /** @var BxDolTemplate $oTemplate */
|
|
|
$oTemplate = new $sClassName($this->_oConfig, $this->_oDb);
|
|
|
$oTemplate->init();
|
|
|
- $this->_oTemplate = new BxDolModuleProxy('module_template', $oTemplate);
|
|
|
+
|
|
|
+ return new BxDolModuleProxy('module_template', $oTemplate);
|
|
|
}
|
|
|
|
|
|
/**
|