/** * Object constructor. * * Builds the object depending on the Module configuration, given to the object * itself as an instance of a ModuleConfig class. * * @since 5.1 * @param ModuleConfig $config Configuration object. */ public function __construct(\Innomatic\Module\ModuleConfig $config) { // Assigns the config and retrieves fully qualified name for value object. $this->config = $config; $vo_fqcn = $this->config->getValueObjectClass(); if (!strlen($vo_fqcn)) { $vo_fqcn = '\\Innomatic\\Module\\Util\\ModuleEmptyValueObject'; } // Imports value object. require_once $vo_fqcn . '.php'; $vo_class = strpos($vo_fqcn, '/') ? substr($vo_fqcn, strrpos($vo_fqcn, '/') + 1) : $vo_fqcn; if (!class_exists($vo_class, true)) { throw new ModuleException('Value object class ' . $vo_class . ' does not exists'); } // Instantiates the value object. $this->valueObject = new $vo_class(); // If there are user defined fields, adds them to the value object. // This is useful for value objects whose structure is stored in // configuration files or determined at runtime. $vo_fields = $this->config->getValueObjectFields(); if (count($vo_fields)) { foreach ($vo_fields as $field) { $this->valueObject->addField($field); } } }