예제 #1
0
파일: record.php 프로젝트: OpenBX/obx.core
 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];
 }