public function __get($field) { if (!array_key_exists($field, $this->fieldsValues)) { if (true !== $this->lazyLoad || !in_array($field, $this->entityFields)) { $e = new Err(array('#FIELD#' => $field), Err::E_GET_WRONG_FIELD); $this->MessagePool->addErrorException($e); throw $e; } // TODO: lazyLoad // Что бы получить недостающие данные, нам необходим первичный или unique ключ // Надо обязательно проверить получение этих данных в методе readFromDBResult // если эти данные не пришли, надо выбросить исключение $primaryKey = $this->entity->getMainTablePrimaryKey(); if (array_key_exists($primaryKey, $this->fieldsValues)) { if (!$this->readFromDBResult($this->entity->getByID($this->fieldsValues[$primaryKey], null, true))) { $e = new Err(array('#FIELD#' => $field), Err::E_GET_LAZY_FIELD); $this->addErrorException($e); throw $e; } } else { if (!$this->_checkUniqueIndex($this->fieldsValues, $foundUniqueName)) { $e = new Err(array('#FIELD#' => $field), Err::E_GET_LAZY_FIELD); $this->addErrorException($e); throw $e; } if (!$this->readByUniqueIndex($this->fieldsValues)) { $e = new Err(array('#FIELD#' => $field), Err::E_GET_LAZY_FIELD); $this->addErrorException($e); throw $e; } } } return $this->fieldsValues[$field]; }