/** * @param string $entityConfigFile * @param self $referencedConfig * @throws Err */ public function __construct($entityConfigFile, self $referencedConfig = null) { $this->parentRefConfig = $referencedConfig; $this->MessagePool = new MessagePool(); if (!is_file(OBX_DOC_ROOT . $entityConfigFile)) { throw new Err('', Err::E_OPEN_CFG_FAILED); } $this->configPath = self::normalizePath($entityConfigFile); $jsonConfig = file_get_contents(OBX_DOC_ROOT . $this->configPath); $configData = json_decode($jsonConfig, true); if (null === $configData) { throw new Err(array('JSON_ERROR' => Tools::getJsonErrorMsg()), Err::E_PARSE_CFG_FAILED); } $this->initialEntityData($configData); $this->initVersion($configData); $this->initEntityClass($configData); $this->initTableName($configData); $this->initLangData($configData); $this->initFields($configData); $this->initReferences($configData); $this->initCheckReferencedExFields(); $this->initIndex($configData); $this->initUnique($configData); $this->initDefaultSort($configData); $this->initDefaultGroupBy($configData); // Ставим метку завершения чтения, на тот случай если кто-то напишет такой код, // в котором объект будет доступен для работы уже после выброса исключения $this->readSuccess = true; }