Array: // [namespace] => default_db__x3A__BI_audit_ENERGA_PRACOWNICY_adresy:BI_audit_ENERGA_PRACOWNICY_adresy // TODO: childName // [A_STATUS] => NORMAL // [ID] => 27 // [SOURCE] => backRef */ class Type_RefConfig { var $_data = []; static function build($refRow = []) { if (!$refRow) throw new Exception("Missing data in build Type RefConfig"); // if (!$refRow['ID']) throw new Exception("Missing ID in Type RefConfig build"); // TODO: allow missing ID? $refConfig = new Type_RefConfig(); $refConfig->id = (int)$refRow['ID']; if (!empty($refRow['ROOT_OBJECT_NS'])) $refConfig->objectNamespace = $refRow['ROOT_OBJECT_NS']; // namespace if (!empty($refRow['CHILD_NAME'])) $refConfig->childName = $refRow['CHILD_NAME']; // typeName if (!empty($refRow['CHILD_NS'])) $refConfig->childNamespace = $refRow['CHILD_NS']; // namespace $refConfig->source = $refRow['SOURCE']; $refConfig->status = $refRow['A_STATUS']; $refConfig->version = $refRow['VERSION']; $refConfig->tableName = self::generateTableName($refConfig->id, $refConfig->source); return $refConfig; } static function generateTableName($id, $source) { // @return string | null switch ($source) { case 'table': return "CRM__#REF_TABLE__{$id}"; case 'view': return "CRM__#REF_TABLE__{$id}_VIEW"; case 'backRef': return "CRM__#REF_TABLE__{$id}_VIEW"; default: throw new Exception("Not Implemented ref source '{$source}'"); } } function __isset($name) { return (array_key_exists($name, $this->_data)); } function __get($name) { if (array_key_exists($name, $this->_data)) { return $this->_data[$name]; } return null; } function __set($name, $value) { $this->_data[$name] = $value; } function toArray() { return $this->_data; } function __toString() { return str_replace('"', '', str_replace([ '{', '}', '":', ',"' ], [ '{ ', ' }', ': ', ', ' ], json_encode($this->_data)) ); } }