示例#1
0
文件: PerfORM.php 项目: Edke/PerfORM
 /**
  * Magic method for getting field's values
  * @param string $name
  * @return mixed
  */
 public function &__get($name)
 {
     $name = strtolower($name);
     if ($this->hasField($name)) {
         if (key_exists($name, $this->fields)) {
             $field = $this->getField($name);
             if ($field->getIdent() == PerfORM::DateTimeField || $field->getIdent() == PerfORM::TimeField || $field->getIdent() == PerfORM::DateField) {
                 return $field;
             } elseif ($field->getIdent() == PerfORM::ForeignKeyField && $field->isEnabledLazyLoading() && !is_null($lazyLoadingKeyValue = $field->getValue())) {
                 $referenceModel = get_class($field->getReference());
                 $model = new $referenceModel();
                 $model->objects()->load('id=%i', $lazyLoadingKeyValue);
                 $field->setValue($model);
                 $field->disableLazyLoading();
             }
             $result = $field->getValue();
             return $result;
         } elseif ($this->isExtended()) {
             $result = $this->extends->__get($name);
             return $result;
         } else {
             throw new Exception('logic exception');
         }
     } else {
         throw new Exception("Model '" . get_class($this) . "' does not contain field '{$name}'.");
     }
 }